请教httpclient4.0中文乱码的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教httpclient4.0中文乱码的问题相关的知识,希望对你有一定的参考价值。
参考技术A 1.服务器认证(Server Authentication)HttpClient处理服务器认证几乎是透明的,仅需要开发人员提供登录信息(login credentials)。登录信息保存在HttpState类的实例中,可以通过 setCredentials(String realm, Credentials cred)和getCredentials(String realm)来获取或设置。
HttpClient内建的自动认证,可以通过HttpMethod类的setDoAuthentication(boolean doAuthentication)方法关闭,而且这次关闭只影响HttpMethod当前的实例。
2.代理认证(proxy authentication)
除了登录信息需单独存放以外,代理认证与服务器认证几乎一致。用 setProxyCredentials(String realm, Credentials cred)和 getProxyCredentials(String realm)设、取登录信息。
3.认证方案(authentication schemes)
是HTTP中规定最早的也是最兼容的方案,遗憾的是也是最不安全的一个方案,因为它以明码传送用户名和密码。它要求一个UsernamePasswordCredentials实例,可以指定服务器端的访问空间或采用默认的登录信息。
HttpClient 用于解决测试时候乱码的问题
@Test
public void doPostWithParam() throws Exception, IOException {
CloseableHttpClient httpClient = HttpClients.createDefault();
// 创建一个post对象
HttpPost post = new HttpPost("http://localhost:8082/httpclient/post.do");
// 创建一个entity,模拟一个表单
List<NameValuePair> kvList = new ArrayList<>();
kvList.add(new BasicNameValuePair("username", "张三"));
kvList.add(new BasicNameValuePair("password", "123"));
// 包装成一个entity对象
StringEntity entity = new UrlEncodedFormEntity(kvList);
// 设置请求的内容
post.setEntity(entity);
// 执行post请求
CloseableHttpResponse respose = httpClient.execute(post);
String string = EntityUtils.toString(respose.getEntity());
System.out.println(string);
respose.close();
httpClient.close();
}
在controller中设置如下内容
@RequestMapping(value = "/httpclient/post",method=RequestMethod.POST,
produces=MediaType.TEXT_PLAIN_VALUE+";charset=utf-8")
@ResponseBody
public String testPost(String username,String password){
System.out.println("username" + username + "/t password" + password) ;
//return TaotaoResult.ok();
return "username" + username + "/t password" + password ;
}
}
以上是关于请教httpclient4.0中文乱码的问题的主要内容,如果未能解决你的问题,请参考以下文章
请教python requests.post()请求一个第三方接口的问题返回中文乱码的问题