guangnian0412's BLOG

          Java in my life

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          我關(guān)注的Blog

          最新評(píng)論

          [HttpClient] 創(chuàng)建一個(gè)HTTP POST 請(qǐng)求 (from Jakarta Commons cookbook 11.7 )

          問(wèn)題:
          ??????? 你需要使用HTTP POST 方法來(lái)向一個(gè)servlet傳遞參數(shù)。

          討論:
          ??????? 創(chuàng)建一個(gè) PostMethod 對(duì)象,然后調(diào)用 setParameter() 或 addParameter() 方法設(shè)置參數(shù)。 PostMethod 對(duì)象將會(huì)傳送一個(gè) Content-Type 頭為 application/x-www-form-urlencoded 的請(qǐng)求,并且參數(shù)將在請(qǐng)求body中被傳送。在下列的例子中演示了用 PostMethod 對(duì)象傳遞參數(shù)的用法:
          import?org.apache.commons.httpclient.HttpClient;
          import?org.apache.commons.httpclient.HttpException;
          import?org.apache.commons.httpclient.NameValuePair;
          import?org.apache.commons.httpclient.methods.PostMethod;

          HttpClient?client?
          =?new?HttpClient(?);

          //?Create?POST?method
          String?url?=?"http://www.discursive.com/cgi-bin/jccook/param_list.cgi";
          PostMethod?method?
          =?new?PostMethod(?url?);

          //?Set?parameters?on?POST????
          method.setParameter(?"test1",?"Hello?World"?);
          method.addParameter(?
          "test2",?"This?is?a?Form?Submission"?);
          method.addParameter(?
          "Blah",?"Whoop"?);
          method.addParameter(?
          new?NameValuePair(?"Blah",?"Whoop2"?)?);

          //?Execute?and?print?response
          client.executeMethod(?method?);
          String?response?
          =?method.getResponseBodyAsString(?);
          System.out.println(?response?);

          method.releaseConnection(?);
          ??????
          param_list.cgi CGI腳本會(huì)對(duì)所以接收到的參數(shù)進(jìn)行回顯,從下面的輸出中,你可以看到傳遞給CGI腳本的三個(gè)參數(shù):
          These?are?the?parameters?I?received:

          test1:
          ??Hello?World
          test2:
          ??This?is?a?Form?Submission
          Blah:
          ??Whoop
          ??Whoop2
          ?????? 有幾種方法來(lái)在一個(gè)PostMethod對(duì)象中設(shè)置參數(shù)。最直接的方法就是調(diào)用setParameter()方法,并傳遞兩個(gè)字符串給它:參數(shù)的名稱(chēng)和參數(shù)值。setParameter()方法將會(huì)替代任何已經(jīng)存在的同名參數(shù)。但是,如果一個(gè)同名的參數(shù)已經(jīng)存在一個(gè)PostMethod對(duì)象中,addParameter()將會(huì)加入另一個(gè)同名參數(shù)值;addParameter()方法同樣接受兩個(gè)String:參數(shù)名和參數(shù)值。另一種方法,這兩個(gè)方法同樣接受一個(gè)包裝了參數(shù)名和參數(shù)值的NameValuePair對(duì)象。在前面的例子中,通過(guò)addParameter()方法,用參數(shù)名Blah傳遞了兩個(gè)值,第一次用兩個(gè)String作為參數(shù),第二次用一個(gè)NameValuePair對(duì)象作為參數(shù)。

          posted on 2006-04-11 22:41 guangnian 閱讀(6721) 評(píng)論(4)  編輯  收藏 所屬分類(lèi): Jakarta Commons

          評(píng)論

          # re: [HttpClient] 創(chuàng)建一個(gè)HTTP POST 請(qǐng)求 (from Jakarta Commons cookbook 11.7 ) 2007-01-10 15:19 happytian

          調(diào)用method.setParameter傳遞中文,需要encode么?
          用method.setRequestBody傳遞中文,encode一下,可以傳遞過(guò)去
          用method.setParameter傳遞怎么也傳不過(guò)去,請(qǐng)問(wèn)什么原因?  回復(fù)  更多評(píng)論   

          # re: [HttpClient] 創(chuàng)建一個(gè)HTTP POST 請(qǐng)求 (from Jakarta Commons cookbook 11.7 ) 2007-01-11 00:15 guangnian

          @happytian
          不好意思,沒(méi)傳遞過(guò)中文的  回復(fù)  更多評(píng)論   

          # re: [HttpClient] 創(chuàng)建一個(gè)HTTP POST 請(qǐng)求 (from Jakarta Commons cookbook 11.7 ) 2007-10-28 11:53 中華信鴿

          學(xué)習(xí)了,寫(xiě)的真好,如果是get呢?  回復(fù)  更多評(píng)論   

          # re: [HttpClient] 創(chuàng)建一個(gè)HTTP POST 請(qǐng)求 (from Jakarta Commons cookbook 11.7 ) 2011-09-23 11:25 makefu

          good!  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 厦门市| 历史| 安平县| 泊头市| 平凉市| 类乌齐县| 衡阳市| 华蓥市| 台中市| 崇文区| 察哈| 敦煌市| 开封县| 临安市| 外汇| 五峰| 德安县| 黄浦区| 麻阳| 北安市| 神池县| 新平| 开远市| 宣恩县| 陈巴尔虎旗| 晋州市| 临清市| 毕节市| 陆河县| 寿阳县| 巴东县| 略阳县| 辽宁省| 贵德县| 大兴区| 泽库县| 洞口县| 鲁甸县| 保康县| 平舆县| 乳山市|