吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1758|回复: 7
收起左侧

[Java 转载] JAVA发HTTP请求 - RestTemplate 案例

[复制链接]
horro 发表于 2020-8-26 11:55
一、对比

java发送Http post请求,一般在java中我们使用 httpcilent 包中的额  HttpPost 类;需要手动设置 setContentType 和 setContentEncoding;
代码书写看起来非常low 如下代码所示,而 spring 提供的 RestTemplate 提供的额方法则看起来就比较高大上一点:

public static String httpPostWithjson(String url, String json) throws IOException {
String result = "";
HttpPost httpPost = new HttpPost(url);
CloseableHttpClient httpClient = HttpClients.createDefault();
try {
BasicResponseHandler handler = new BasicResponseHandler();
StringEntity entity = new StringEntity(json, "utf-8");//解决中文乱码问题
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
httpPost.setEntity(entity);
result = httpClient.execute(httpPost, handler);
return result;
} catch (Exception e) {
e.printStackTrace();

    } finally {
        try {
            httpClient.close();
        } catch (Exception e) {
            e.printStackTrace();
        }[b]
    }
    return result;
}


二、话不多说,直接给2个常用 RestTemplate 案例,复制即可使用:

1.提交JSON格式的数据

public class Testttttttt {

private static RestTemplate restTemplate = new RestTemplate();

public static String sendHttpRequestStatic(String url, JSONObject jsonParam) {
    JSONObject result = new JSONObject();
    try {
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<String> request = new HttpEntity<>(jsonParam.toJSONString(), httpHeaders);
        ResponseEntity<String> response = restTemplate.postForEntity(url,request,String.class);
        // Http 请求成功返回响应体
        if (response.getStatusCodeValue() == 200) {
            String resultStr = JSON.toJSONString(response.getBody()).replace("\\","");
            return resultStr.substring(1,resultStr.length() - 1);
        } else {
            result.put("code","-1");
            result.put("data","请求失败");
            return result.toJSONString();
        }
    } catch (Exception e) {
        e.printStackTrace();
        result.put("code","-1");
        result.put("data","请求异常");
        return result.toJSONString();
    }
}

}



2.提交表单数据(multipart/form-data)

public String sendHttpRequest(String url, JSONObject jsonParam, Map<String,String> param) {
JSONObject result = new JSONObject();
try {
String body;
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
MultiValueMap<String, String> mapParam = new LinkedMultiValueMap<>();
mapParam.setAll(param);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(mapParam, httpHeaders);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, request, String.class);
// Http 请求成功返回响应体
if (response.getStatusCodeValue() == 200) {
String resultStr = JSON.toJSONString(response.getBody()).replace("\","");
return resultStr.substring(1,resultStr.length() - 1);
} else {
result.put("code","-1");
result.put("data","请求失败");
return result.toJSONString();
}
} catch (Exception e) {
e.printStackTrace();
result.put("code","-1");
result.put("data","请求异常");
return result.toJSONString();
}
}



三、看起来代码是不是高大上一点,当然RestTemplate还有许多其他调用方式,需要的朋友可以查看一下:其他方式

免费评分

参与人数 2吾爱币 +6 热心值 +2 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
沫沫的诗敏 + 1 + 1 太棒了这就去试一下,不知道在安卓能用吗

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| horro 发表于 2020-8-26 12:00
为什么我的代码格式是乱的,还有最后的连接不显示

点评

用md插入代码还要在md界面里点代码按钮  详情 回复 发表于 2020-8-26 14:34
丨miss丶星星 发表于 2020-8-26 13:20
zhyfans 发表于 2020-8-26 13:29
谢谢楼主分享,用springboot开发,都是使用的RestTemplate
沫沫的诗敏 发表于 2020-8-26 13:53
在安卓能用吗
苏紫方璇 发表于 2020-8-26 14:34
horro 发表于 2020-8-26 12:00
为什么我的代码格式是乱的,还有最后的连接不显示

用md插入代码还要在md界面里点代码按钮
爱你分享 发表于 2020-8-26 17:29
zhyfans 发表于 2020-8-26 13:29
谢谢楼主分享,用springboot开发,都是使用的RestTemplate

eurke,远程调用微服务也是么+
 楼主| horro 发表于 2020-8-31 14:46
苏紫方璇 发表于 2020-8-26 14:34
用md插入代码还要在md界面里点代码按钮

多谢多谢,下次注意
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 03:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表