RestTemplate发送get和post请求demo
get请求
public static void main(String[] args) {
RestTemplate restTemplate = new RestTemplate();
String res = restTemplate.getForObject("http://localhost:8080/test",String.class);
System.out.println(res);
}
get请求带参数
public static void main(String[] args) {
RestTemplate restTemplate = new RestTemplate();
Map<String,String> map = new HashMap<String,String>();
map.put("strs","hello");
String res = restTemplate.getForObject("http://localhost:8080/test?strs={strs}",String.class,map);
System.out.println(res);
}
post请求
public static void main(String[] args) {
RestTemplate restTemplate = new RestTemplate();
String res = restTemplate.postForObject("http://localhost:8080/test",null,String.class);
System.out.println(res);
}
post请求带参数
public static void main(String[] args) {
RestTemplate restTemplate = new RestTemplate();
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
map.add("strs", "hello");
String result = restTemplate.postForObject("http://localhost:8080/test", map, String.class);
System.out.println(result);
}
post请求返回xml格式而不是json的问题
在华为微服务环境下,RestTemplate发送请求返回的格式默认是xml格式,要想获取json格式响应,可以用下面的工具类
Demo:
String json = HttpUtils.doPostFormData(url, multiValueMap);
依赖
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.util.*;
public class HttpUtils {
public static String doPostFormData(String url, HashMap<String, String> map) throws Exception {
String result = "";
CloseableHttpClient client = null;
CloseableHttpResponse response = null;
RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(550000).setConnectTimeout(550000)
.setConnectionRequestTimeout(550000).setStaleConnectionCheckEnabled(true).build();
client = HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
URIBuilder uriBuilder = new URIBuilder(url);
HttpPost httpPost = new HttpPost(uriBuilder.build());
httpPost.setHeader("Connection", "Keep-Alive");
httpPost.setHeader("Charset", "UTF-8");
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
List<NameValuePair> params = new ArrayList<>();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
NameValuePair pair = new BasicNameValuePair(entry.getKey(), entry.getValue());
params.add(pair);
}
httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
try {
response = client.execute(httpPost);
if (response != null) {
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
result = EntityUtils.toString(resEntity, "UTF-8");
}
}
} catch (ClientProtocolException e) {
throw new RuntimeException("创建连接失败" + e);
} catch (IOException e) {
throw new RuntimeException("创建连接失败" + e);
}
return result;
}
}