栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java代码发送http post请求

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 map = new HashMap<>();
        map.put("app_key", "1");
        map.put("app_secret", "2");

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);

        HttpEntity> 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;
    }

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017480.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号