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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网络——提交表单数据(post方式)

發(fā)布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络——提交表单数据(post方式) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【0】README

1) 本文文字描述 轉(zhuǎn)自 core java volume 2 , 旨在理解 網(wǎng)絡(luò)——提交表單數(shù)據(jù) 的基礎(chǔ)知識 ;
2) for source code, please visit https://github.com/pacosonTang/core-java-volume/tree/master/coreJavaAdvanced/chapter3/postRequest


【1】提交表單數(shù)據(jù)(post方式)相關(guān)

0)執(zhí)行server 端腳本過程中的數(shù)據(jù)流:

1)在向web server 發(fā)送消息時, 通常會用到兩個命令: GET AND POST; (干貨——在向web server 發(fā)送消息時, 通常會用到兩個命令: GET AND POST;)
2)get 提交方式

  • 2.1)使用get的時候, 只需要將參數(shù)添加到 URL 的結(jié)尾處即可, 這種 URL 的格式如下:

    http://host/script?parameters

  • 2.2) get 命令有一個缺點: 大多數(shù)瀏覽器對 get 請求中可以包含的字符數(shù)做了限制; (干貨——get 命令有一個缺點)

3)post 提交方式

  • 3.1)在使用 post 命令時, 并不需要再URL 中添加任何參數(shù), 而是從 URLConnection 中獲取輸出流, 并將 名-值對寫入到流中。
  • 3.2)POST提交方式,提交數(shù)據(jù)到 server 的詳細過程: (干貨——POST提交方式,提交數(shù)據(jù)到 server 的詳細過程)

    • step1) 創(chuàng)建一個URLConnection對象;

      URL url = new URL(urlName);
      URLConnection connection = url.openConnection();

    • step2)調(diào)用 setDoOutput 方法建立一個用于輸出的連接:

      connection.setDoOutput(true);

    • step3)調(diào)用 getOutputStream 方法獲得一個流, 可以通過這個流向 server 發(fā)送數(shù)據(jù), 如果要向 server 發(fā)送文本消息, 那么可以非常方便地將流包裝在 PrintWriter 對象中:

      PrintWriter out = new PrintWriter(connnection.getOutputStream());

    • step4) 向 server 發(fā)送數(shù)據(jù);

      out.println(name1 + “=” + URLEncoder.encode(value1, “UTF-8”) + “&”);

    • step5)關(guān)閉輸出流:

      out.close();

4)在讀取響應(yīng)過程中會碰到一個問題:

  • 4.1) 如果腳本運行錯誤,那么調(diào)用 connection.getInputStream() 時就會拋出一個 FileNotFoundException 異常。但是此server 仍然會向 瀏覽器返回一個 錯誤頁面(常見的404 錯誤);
  • 4.2)為了捕捉這個錯誤頁面, 可以將 URLConnection 對象轉(zhuǎn)換為 HttpURLConnection 類并調(diào)用它的 getErrorStream 方法: (干貨——如何捕捉這個錯誤頁面)

    InputStream err = ((HttpURLConnection) connection).getErrorStream();


5) 人們常會問: 除了我們提供的 數(shù)據(jù)外, URLConnection 到底還向server 發(fā)送了什么信息: (干貨——除了我們提供的數(shù)據(jù)外,URLConnection 到底還向server 發(fā)送了什么信息?)
  • 5.1) URLConnection 對象首先向 server 發(fā)送一個 請求頭。 當(dāng)提交表單數(shù)據(jù)時, 該請求頭包含下面這行內(nèi)容:

    Content-Type:application/x-www-form-urlencoded

  • 5.2)而 POST 的請求頭還必須包括內(nèi)容長度, 如

    Content-Length:24;

  • 5.3)請求頭必須以空白行結(jié)尾。 緊隨其后的才是數(shù)據(jù)部分。 web server 過濾掉請求頭后將數(shù)據(jù)部分發(fā)送給server 端 腳本程序;

Attention) URLConnection 對象會把 你發(fā)送到 輸出流的所有數(shù)據(jù)都緩存起來, 這是因為在真正發(fā)送前, 它必須首先確定內(nèi)容的總長度;
6) 看個荔枝: (示例代碼 用于將 Post 數(shù)據(jù)發(fā)送給任何腳本, 他將數(shù)據(jù)放在如下的 .properties 文件:

url = http://esa.un.org/unpd/wpp/unpp/p2k0data_script.asp
Panel=1
Variable=2
Location=404
Varient=2
StartYear=1950
EndYear=2050


總結(jié)

以上是生活随笔為你收集整理的网络——提交表单数据(post方式)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。