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

maven

org.apache.httpcomponents

httpclient

4.5.1

发送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 String toJson(T t){

return JSON.toJSONString(t);

}

public static T parseJson(String text,Class 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") + "&param2=value2";

HttpUtils.get(param, "http://www.baidu.com");

接受 http请求

接收post请求

//接收post请求需要加@RequestBody

@RequestMapping(value="test",method=RequestMethod.POST)

@ResponseBody

public MyResult test(HttpServletRequest request,@RequestBody String record){

MyResult result = new MyResult();

Obj obj=JSONUtil.parseJson(record, Obj.class);

return result;

}

接收get请求

@RequestMapping(value="test")

@ResponseBody

public MyResult test(HttpServletRequest request,String param1,String param2){

MyResult result = new MyResult();

//TODO

return result;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值