使用post方式发生请求,设置中间传输编码为UTF-8
public class HttpRequest {
public String sendRequest(String urlStr, Map<String,String> params){
String response = "";
/**
* 发送
*/
try {
HttpClient httpClient = new HttpClient();
httpClient.getParams().setContentCharset("UTF-8");
PostMethod postMethod = new PostMethod(urlStr);
Iterator iter = params.entrySet().iterator(); //map转数组
//封装参数
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
String key = (String) entry.getKey();
String value = (String) entry.getValue();
postMethod.setParameter(key,value);
}
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
httpClient.executeMethod(postMethod);
/**
* 接收返回的数据,注意编码格式
*/
InputStream inputStream = postMethod.getResponseBodyAsStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"UTF-8");
BufferedReader reader = new BufferedReader(inputStreamReader);
String temp = "";
//循环接受返回的字符串
while ((temp = reader.readLine())!=null){
response += temp;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
}
相应的,服务器接收时设定接收和返回的编码格式
@RequestMapping("login")
public void doLogin(HttpServletRequest request, HttpServletResponse response){
try {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}