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

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") + "&param2=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;
  }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值