0
点赞
收藏
分享

微信扫一扫

RestTemplate 支持GET请求在body里面传递json


1.定义HttpGetRequestWithEntity实现HttpEntityEnclosingRequestBase抽象类,以支持GET请求携带body数据

没办法,第三方提供的接口不按照标准套路来,只能重写RestTemplate的
定义HttpGetRequestWithEntity实现HttpEntityEnclosingRequestBase抽象类,以支持GET请求携带body数据。

package com.sugon.cloud.utils;

import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
import org.apache.http.client.methods.HttpUriRequest;
import org.springframework.http.HttpMethod;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;

import java.net.URI;

/**
* @Auther: liuysh
* @Date: 2021/7/24 10:18
* @Description:
*/
public class HttpComponentsClientRestfulHttpRequestFactory extends HttpComponentsClientHttpRequestFactory {
@Override
protected HttpUriRequest createHttpUriRequest(HttpMethod httpMethod, URI uri) {

if (httpMethod == HttpMethod.GET) {
return new HttpGetRequestWithEntity(uri);
}
return super.createHttpUriRequest(httpMethod, uri);
}

/**
* 定义HttpGetRequestWithEntity实现HttpEntityEnclosingRequestBase抽象类,以支持GET请求携带body数据
*/

private static final class HttpGetRequestWithEntity extends HttpEntityEnclosingRequestBase {
public HttpGetRequestWithEntity(final URI uri) {
super.setURI(uri);
}

@Override
public String getMethod() {
return HttpMethod.GET.name();

}
}
}

使用样例

public class RestTemplateUtils {
public static HttpEntity<String> getHeader(String param){
HttpHeaders headers = new HttpHeaders();
headers.add("X-Auth-Token", getHeaderAuthorization() );
// MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
return new HttpEntity<>(param, headers);
}
public static void main(String[] args) {
RestTemplate restTemplate=new RestTemplate();
restTemplate.setRequestFactory(new HttpComponentsClientRestfulHttpRequestFactory());

String url="http://get.com";
String param="{\"name\": \"liuyunshengsir\"}";
ResponseEntity<JSONObject> responseEntity = restTemplate.exchange(url, HttpMethod.GET, getHeader(param), JSONObject.class);

System.out.println("ok !!!");
}
}


举报

相关推荐

0 条评论