700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java代码发送http post请求

java代码发送http post请求

时间:2018-12-11 04:47:26

相关推荐

java代码发送http post请求

1,使用springboot自带的restTemplate

(感觉这个很容易踩坑,特别是公司项目下使用,一不小心就容易报错)

org.springframework.web.client.RestClientException: No HttpMessageConverter for java.util.LinkedHashMap and content type “application/x-www-form-urlencoded;charset=UTF-8”,很容易就犯了这样的错。type是可变的比如application/json

String url = "post请求地址";//这是构建postbody,你可以不构建Map<String, Object> map = new HashMap<>();map.put("app_key", "1");map.put("app_secret", "2");HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);HttpEntity<Map<String, Object>> request = new HttpEntity<>(map,headers);//利用resttemplate调用post方法//你需要注入,或者自己创建RestTemplate restTemplate=new RestTemplate ()String json = restTemplate.postForObject(url, request, String.class);//把json字符串转换为map对象,这可以不用写,如果不需要转换Map response = (Map) ((Map) new JSONParser(json).parse()).get("data");return response;

2,使用URLConnection发送post请求

这个方式的话,发送post请求是不太容易踩坑的,基本的话,你可以直接复制使用

//url是需要调用的地址,param是消息体,用map转换成json字符串就行了public static String sendPost(String url, String param,Map headerMap) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性//下面注释的setRequestProperty可要可不要conn.setRequestProperty("accept", "application/json, text/javascript, */*; q=0.01");conn.setRequestProperty("Accept-Encoding", "gzip, deflate");// conn.setRequestProperty("Connection", "keep-alive");//conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8");//conn.setRequestProperty("Content-Length", "80");conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");// conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36");//conn.setRequestProperty("user-agent",//"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流OutputStreamWriter outWriter = new OutputStreamWriter(conn.getOutputStream(), "utf-8");out = new PrintWriter(outWriter);// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!"+e);e.printStackTrace();}//使用finally块来关闭输出流、输入流finally{try{if(out!=null){out.close();}if(in!=null){in.close();}}catch(IOException ex){ex.printStackTrace();}}return result;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。