您的位置:首页 > 理论基础 > 计算机网络

java 接受和发送http,post,get请求,参数中文乱码解决。

2017-08-21 09:40 846 查看
maven 坐标

<!-- HTTP -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.1</version>
</dependency>
一,发送post和get请求

http工具类


public class HttpUtils {
/**
* 发送 get请求
*/
public static String get(String param,String URL) {
CloseableHttpClient httpclient = HttpClients.createDefault();
String obj=null;
try {
HttpUriRequest httpget = new HttpGet(URL+"?"+param);
// 执行get请求.
CloseableHttpResponse response = httpclient.execute(httpget);
try {
// 获取响应实体
HttpEntity entity = response.getEntity();
// 打印响应状态
System.out.println(response.getStatusLine());
if (entity != null) {
obj=EntityUtils.toString(entity);
}
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return obj;
}

/**
* 发送 post请求
*/
public static String post(String json,String URL) {
String obj=null;
// 创建默认的httpClient实例.
CloseableHttpClient httpclient = HttpClients.createDefault();
// 创建httppost
HttpPost httppost = new HttpPost(URL);
httppost.addHeader("Content-type", "application/json; charset=utf-8");
httppost.setHeader("Accept", "application/json");
try {
StringEntity s = new StringEntity(json,Charset.forName("UTF-8")); //对参数进行编码,防止中文乱码
s.setContentEncoding("UTF-8");
httppost.setEntity(s);
CloseableHttpResponse response = httpclient.execute(httppost);
try {
//获取相应实体
HttpEntity entity = response.getEntity();
if (entity != null) {
obj=EntityUtils.toString(entity, "UTF-8");
}

} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return obj;
}
}
json工具类

public final class JSONUtil {

public static<T> String toJson(T t){
return JSON.toJSONString(t);
}

public static<T> T parseJson(String text,Class<T> clazz){
return JSON.parseObject(text, clazz);
}
}控制层
//发送post请求
Obj obj=new Obj()//参数 任意实体类
HttpUtils.post(JSONUtil.toJson(obj), "http://www.baidu.com");
//发送get请求
String param="param1=" + URLEncoder.encode("中国", "UTF-8") + "¶m2=value2";
HttpUtils.get(param, "http://www.baidu.com");
二 接受 http请求
接收post请求

//接收post请求需要加@RequestBody
@RequestMapping(value="test",method=RequestMethod.POST)
@ResponseBody
 public MyResult<Object> test(HttpServletRequest request,@RequestBody String record){
MyResult<Object> result = new MyResult<Object>();
Obj obj=JSONUtil.parseJson(record, Obj.class);
 return result;
}接收get请求
@RequestMapping(value="test")
@ResponseBody
public MyResult<Object> test(HttpServletRequest request,String param1,String param2){
MyResult<Object> result = new MyResult<Object>();
//TODO
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  http