‘壹’ 用java写了一个Http client,但向服务器post的时候传中文参数老是乱码,请大侠明示一下
以上的2个方法最好都要用上 过滤器只能解决POST请求 ,要处理GET请求就要用
bytes = string.getBytes("iso-8859-1") 得到原始的字节串,再用 string = new String(bytes, "GB2312") 重新得到正确的字符串 。
这个方法,所以最好2个都要写,这样不管是POST还是GET请求就都能解决了。
‘贰’ Java9之HttpClientAPI实战详解
Java9 引入了HttpClientAPI,这是对Java先前版本中HTTP功能的改进和扩展。新版本的更新主要是为了适应现代网络应用的需求,解决HTTP/1.1版本中存在的问题,引入了更高效的HTTP/2规范。
在JDK 1.0版本以来,Java就支持HTTP/1.1,但原有的API存在一些问题,包括设计过于通用,难以使用,包含未公开的行为,以及只支持阻塞模式,要求每个请求/响应都使用单独的线程。这些问题在Java9的更新中得到了解决。
HTTP/2规范通过引入二进制数据交换和多路复用,提高了数据交换的效率。它支持并发请求,消除了HTTP/1.1中的head-of-line阻塞问题,允许客户端建议请求优先级,服务器据此排序响应,以及压缩首部信息以降低延迟。此外,HTTP/2还允许服务器向客户端推送资源。
Java9的HttpClientAPI旨在取代旧的API,它提供了针对HTTP/1.1和HTTP/2的客户端支持。新的API在学习和使用上更加简单直观,并提供了基于事件的通知机制。它还支持服务器推送功能,简化了与服务器的WebSocket通信设置。同时,它支持HTTP/2和HTTPS/TLS协议,工作在同步(阻塞模式)和异步(非阻塞模式)模式下。
要使用Java9的HttpClient服务,需要熟悉jdk.incubator.http包中的三个关键类:HttpClient、HttpRequest和HttpResponse。HttpClient是客户端请求的容器,允许配置公共信息并发送多个请求。HttpRequest表示可以发送到服务器的HTTP请求,HttpRequest.Builder用于构建请求,并允许设置URI、头部和主体。HttpResponse表示HttpRequest的响应,提供了访问响应头和主体的方法。
在实战应用中,可以使用HttpClient构建请求,使用HttpRequest发送请求,然后处理由HttpResponse返回的响应。示例代码包括使用默认配置的请求、自定义配置的请求,以及GET和POST请求的实现。通过处理响应,可以检查状态代码、头文件和正文,实现更复杂的网络操作。