2013-08-24 12 views
1

製作一個從數據源獲取指令(步驟)的類,並自動執行少量HC(http://hc.apache.org Apache Http Client)操作。java apache HC BasicHttpEntityEnclosingRequest vs BasicHttpRequest

希望能夠執行HTTP post,get和direct(如發送JSON或XML/soap消息到Web服務器)調用。

困惑什麼時候使用BasicHttpEntityEnclosingRequest vs BasicHttpReques什麼是封閉的? 現在我有步驟來初始化上下文,提供PARAM值的URL,當我想提出這個方法等是我在做什麼:

 HttpPost httpost = null;//todo correct method 
     //HttpEntity resp = this.httpclient.e 

     HttpEntityEnclosingRequest reqEntity1 = null;//use this 
     HttpRequest reqEntity = new BasicHttpRequest(method, urls, httpVer);//or this? 
     URL url = new URL(urls); 
     String hostNm = url.getHost(); 
     int port = url.getPort(); 
     String sche = url.getProtocol(); 
     logger.info("scheme/ proto :" + sche); 
     HttpHost httpHost = new HttpHost (hostNm, port, sche); 
     response = this.httpclient.execute(httpHost, reqEntity, localContext); 

問題:使用一種或另一種或另一種有用於封閉或常規HttpRequest的屬性?

參見

http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/HttpRequest.html

http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/message/BasicHttpRequest.html

http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/HttpEntityEnclosingRequest.html

回答

1

HTTP規範清楚地定義唯一POSTPUT爲可以包圍請求內容主體的方法。無論它是否合法用於附加請求主體的其他方法(如GETHEAD)都有爭議。

HttpCore遵循HTTP規範的嚴格解釋,並將HttpRequest作爲常規請求,它不提供設置內容正文的方法。對於PUTPOST等方法,它爲擴展HttpEntityEnclosingRequest提供了請求實體操作的額外方法。

+0

謝謝所以如果方法是後我需要它。封閉是身體的一部分。我想所有對於那些更熟悉http協議措辭 – tgkprog

+0

的人都很明顯,我打算在HC用戶組發佈這個消息,但我很高興你遵循堆棧:-) – tgkprog