最近做專案時,發現手機客戶端通過http協議post方式上傳資料到服務端,在伺服器端通過request.getinputstream()能獲取到相應的資料,但用request.getparameter()卻獲取不到資料。這是怎麼回事呢,後來發現這種情況跟form表單的屬性 enctype有關係。
servlet的api提供了對這種編碼方式解碼的支援,只需要呼叫servletrequest 類中的getparameter()方法就可以得到表單中提交的資料。
2、在傳輸大資料量的二進位制資料時,必須將編碼方式設定成enctype="multipart/form-data",當以這種方式提交資料時,http報文中的內容是:
如果以這種方式提交資料就要用request.getinputstream()或request.getreader()來獲取提交的資料,用 request.getparameter()是獲取不到提交的資料的。
當form表單內容採用enctype=multipart/form-data編碼時,呼叫request.getparameter()獲取不到資料,即使已經呼叫了request.getparameter()方法也可以再通過呼叫request.getinputstream()或request.getreader()獲取表單中的資料,但request.getinputstream()和request.getreader()在同乙個響應中是不能混合使用的,如果混合使用會拋異常的。
HTTP客戶端傳送Post和Get請求
1 傳送請求 通過request物件傳送請求 建立request物件 設定request引數 request.method post request.contentlength encoding.utf8.getbytecount postdatastr request.cookiecontaine...
客戶端到伺服器的post請求
1 客戶端 a 連線方法 public string getdatefromservice context context,listuserpair,string filter catch exception e finally catch ioexception e finally return ...
hbase客戶端請求過程中涉及的可配置引數
在hbase site.xml中的配置 memstore持久化容量 hbase.hregion.memstore.flush.size 當memstore資料達到該數值時進行持久化 memstore阻塞係數 hbase.hregion.memstore.block.multiplier 當memst...