国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java編程Post數(shù)據(jù)請求和接收代碼詳解

Java編程Post數(shù)據(jù)請求和接收代碼詳解

2021-02-07 17:05白天的貓頭鷹 Java教程

這篇文章主要介紹了Java編程Post數(shù)據(jù)請求和接收代碼詳解,涉及enctype的三種編碼,post與get等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。

這兩天在做http服務(wù)端請求操作,客戶端post數(shù)據(jù)到服務(wù)端后,服務(wù)端通過request.getParameter()進行請求,無法讀取到數(shù)據(jù),搜索了一下發(fā)現(xiàn)是因為設(shè)置為text/plain模式才導(dǎo)致讀取不到數(shù)據(jù)

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

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

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

enctype的三種編碼

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

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

text/plain用于發(fā)送純文本內(nèi)容,不對特殊字符進行編碼,一般用于email之類的。

application/x-www-form-urlencoded和text/plain的區(qū)別簡單講就是一個發(fā)送html內(nèi)容,一個發(fā)送純文本內(nèi)容

application/x-www-form-urlencoded在發(fā)送前編碼所有字符(默認(rèn))

multipart/form-data不對字符編碼。在使用包含文件上傳控件的表單時,必須使用該值。

text/plain空格轉(zhuǎn)換為"+"加號,但不對特殊字符編碼。

當(dāng)定義enctype為application/x-www-form-urlencoded時,使用以下方式接收數(shù)據(jù)

?
1
request.getParameter(參數(shù)名);

當(dāng)定義enctype為text/plain時,使用以下方式接收數(shù)據(jù)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
    // 接收請求數(shù)據(jù)
    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

tp請求在所有的編程語言中幾乎都是支持的,我們常用的兩種為:GET,POST請求。一般情況下,發(fā)送一個GET請求都很簡單,因為參數(shù)直接放在請求的URL上,對于POST請求,由于其數(shù)據(jù)是在消息體中發(fā)送出去的,所以相對來說要麻煩一點,再涉及到需要發(fā)送文件等二進制的數(shù)據(jù)類型,就更需要更多的處理。

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

客戶端post數(shù)據(jù)到服務(wù)端,服務(wù)端接收處理

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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);
            /*設(shè)定禁用緩存*/
            urlConn.setRequestProperty("Pragma:", "no-cache");
            urlConn.setRequestProperty("Cache-Control", "no-cache");
            /*維持長連接*/
            urlConn.setRequestProperty("Connection", "Keep-Alive");
            /*設(shè)置字符集*/
            urlConn.setRequestProperty("Charset", "UTF-8");
            /*設(shè)定輸出格式為json*/
            urlConn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
            /*設(shè)置使用POST的方式發(fā)送*/
            urlConn.setRequestMethod("POST");
            /*設(shè)置不使用緩存*/
            urlConn.setUseCaches(false);
            /*設(shè)置容許輸出*/
            urlConn.setDoOutput(true);
            /*設(shè)置容許輸入*/
            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 = "發(fā)送POST失敗!"+ "code="+urlConn.getResponseCode() + "," + "失敗消息:"+ urlConn.getResponseMessage();
                // 定義BufferedReader輸入流來讀取URL的響應(yīng)
                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("發(fā)送失敗!錯誤信息為:"+message);
            } else{
                /*發(fā)送成功返回發(fā)送成功狀態(tài)*/
                postState = true;
                // 定義BufferedReader輸入流來讀取URL的響應(yīng)
                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("發(fā)送POST成功!返回內(nèi)容為:" + message);
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        finally{
            try {
                if (bufferedReader != null) {
                    bufferedReader.close();
                }
            }
            catch (IOException ex) {
                ex.printStackTrace();
            }
            return postState;
        }
    }
    /*讀取request數(shù)據(jù)*/
    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;
    }
}

總結(jié)

以上就是本文關(guān)于Java編程Post數(shù)據(jù)請求和接收代碼詳解的全部內(nèi)容,希望對大家有所幫助。如有不足之處,歡迎留言指出。

原文鏈接:http://blog.csdn.net/zouqingfang/article/details/44781909

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 色亚洲成人 | 鲁管视频| 成人精品一区二区三区中文字幕 | 欧美成人综合在线 | 99精品欧美一区二区三区 | 欧美freesex| 国产精品自产拍在线观看 | 久久久一区二区 | 狠狠综合久久av一区二区老牛 | 成人午夜免费视频 | 亚洲精品国产综合区久久久久久久 | 国产精品一区二区久久久 | 国产在线不卡一区 | 色接久久 | 国产欧美日韩综合精品一区二区 | 在线一区观看 | 亚洲精品一二区 | 高清视频一区 | 国产成人综合在线观看 | 久久精品国产99精品国产亚洲性色 | 国产免费一区二区 | 999一个人免费看ww | 中文字幕av在线 | 亚洲一区二区三区四区五区午夜 | 99精品久久 | 久久国产精品久久精品国产演员表 | 欧美在线免费 | 午夜草民福利电影 | 99成人| 在线无吗 | 精品视频一区二区三区 | 青娱乐91 | yw193com尤物 | 欧美日韩亚洲国产 | 欧美麻豆 | 91看片淫黄大片一级在线观看 | 色接久久| 亚洲色图在线观看 | 精品一区二区av | 中文字幕 日韩有码 | 久久国产精品一区二区 |