日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java Post 数据请求和接收

發布時間:2025/3/15 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Post 数据请求和接收 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? 這兩天在做http服務端請求操作,客戶端post數據到服務端后,服務端通過request.getParameter()進行請求,無法讀取到數據,搜索了一下發現是因為設置為text/plain模式才導致讀取不到數據

?

urlConn.setRequestProperty("Content-Type","text/plain; charset=utf-8");

????? 若設置為以下方式,則通過request.getParameter()可以讀取到數據

?

?

urlConn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

?

  • ?enctype的三種編碼

?

???? ?? form表單中enctype屬性可以用來控制對表單數據的發送前的如何進行編碼,即在發送到服務器之前,所有字符都會進行編碼(空格轉換為 "+" 加號,特殊符號轉換為 ASCII HEX 值)。默認是application/x-www-form-urlencoded。

??????? multipart/form-data用于發送二進制的文件,其他兩種類型不能用于發送文件

????? text/plain用于發送純文本內容,不對特殊字符進行編碼,一般用于email之類的。

??????? application/x-www-form-urlencodedtext/plain的區別簡單講就是一個發送html內容,一個發送純文本內容

  • application/x-www-form-urlencoded?? ?在發送前編碼所有字符(默認)
  • multipart/form-data?? ?不對字符編碼。在使用包含文件上傳控件的表單時,必須使用該值。
  • text/plain??? 空格轉換為 "+" 加號,但不對特殊字符編碼。
    • 當定義enctype為application/x-www-form-urlencoded時,使用以下方式接收數據

    ?

    request.getParameter(參數名);

    ?

    • 當定義enctype為text/plain時,使用以下方式接收數據

    ?

    // 接收請求數據BufferedReader reader = request.getReader();char[] buf = new char[512];int len = 0;StringBuffer contentBuffer = new StringBuffer();while ((len = reader.read(buf)) != -1) {contentBuffer.append(buf, 0, len);}String content = contentBuffer.toString();if(content == null){content = "";}
    • ? post 與get

    ?????????????? post和get可以通過鍵值對的方式進行參數傳輸,服務端通過request.getparameter方式進行請求獲取數據。

    • 客戶端post數據到服務端,服務端接收處理

    ?

    public class UrlConnection {?? ?@SuppressWarnings("finally")public static boolean response(String url,String content) {String line ?? ??? ?= "";String message?? ??? ?= "";String returnData?? = "";boolean postState ?? ?= false;BufferedReader bufferedReader = null;try {URL urlObject = new URL(url);HttpURLConnection urlConn = (HttpURLConnection) urlObject.openConnection();urlConn.setDoOutput(true);/*設定禁用緩存*/urlConn.setRequestProperty("Pragma:", "no-cache");???? ?urlConn.setRequestProperty("Cache-Control", "no-cache");/*維持長連接*/urlConn.setRequestProperty("Connection", "Keep-Alive"); ?/*設置字符集*/urlConn.setRequestProperty("Charset", "UTF-8");/*設定輸出格式為json*/urlConn.setRequestProperty("Content-Type", "application/json;charset=utf-8");/*設置使用POST的方式發送*/urlConn.setRequestMethod("POST");??????????? ?/*設置不使用緩存*/urlConn.setUseCaches(false);/*設置容許輸出*/urlConn.setDoOutput(true); ?/*設置容許輸入*/urlConn.setDoInput(true);???????????? ?urlConn.connect();OutputStreamWriter outStreamWriter = new OutputStreamWriter(urlConn.getOutputStream(),"UTF-8"); outStreamWriter.write(content);outStreamWriter.flush();outStreamWriter.close();/*若post失敗*/if((urlConn.getResponseCode() != 200)){returnData = "{\"jsonStrStatus\":0,\"processResults\":[]}";message = "發送POST失敗!"+ "code="+urlConn.getResponseCode() + "," + "失敗消息:"+ urlConn.getResponseMessage();// 定義BufferedReader輸入流來讀取URL的響應InputStream errorStream = urlConn.getErrorStream(); if(errorStream != null){InputStreamReader inputStreamReader = new InputStreamReader(errorStream,"utf-8");bufferedReader = new BufferedReader(inputStreamReader); ?while ((line = bufferedReader.readLine()) != null) { ?message += line;?? ?}??????? ?inputStreamReader.close();}errorStream.close();System.out.println("發送失敗!錯誤信息為:"+message);???????????? ??? ?}else{/*發送成功返回發送成功狀態*/postState = true;// 定義BufferedReader輸入流來讀取URL的響應InputStream inputStream = urlConn.getInputStream(); ?InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"utf-8");bufferedReader = new BufferedReader(inputStreamReader); ?while ((line = bufferedReader.readLine()) != null) { ?message += line; ?}?????? ?returnData = message;inputStream.close();inputStreamReader.close();System.out.println("發送POST成功!返回內容為:" + message);??????????? ??? ?? ??? ?}} catch (Exception e) {e.printStackTrace();}finally{try {? ?if (bufferedReader != null) { ?bufferedReader.close(); ?}???????????????? ?} catch (IOException ex) { ?ex.printStackTrace(); ?} ??? ??? ?return postState;}}/*讀取request數據*/public static String getRequestData(HttpServletRequest request) throws IOException{BufferedReader reader = request.getReader();char[] buf = new char[512];int len = 0;StringBuffer contentBuffer = new StringBuffer();while ((len = reader.read(buf)) != -1) {contentBuffer.append(buf, 0, len);}String content = contentBuffer.toString();if(content == null){content = "";}return content;} }


    ?



    ?

    轉載于:https://www.cnblogs.com/wala-wo/p/5119217.html

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的Java Post 数据请求和接收的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。