『壹』 用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請求的實現。通過處理響應,可以檢查狀態代碼、頭文件和正文,實現更復雜的網路操作。