2014-02-26 175 views
25

我正在使用apache-httpclient-4.3。我會分析一個http請求,特別是查詢字符串參數,但是HttpClient.getParams()已棄用。我應該用什麼來代替?

@Deprecated 
public HttpParams getParams() 
Deprecated. (4.3) use constructor parameters of configuration API provided by HttpClient 

我不確定明白這是什麼意思。我應該使用某些配置API的構造函數參數(那是什麼?HostConfiguration不再可用作類)。

HttpGet request = new HttpGet("http://example.com/?var1=value1&var2=value2"); 

我無法找到一個方法來讀回參數從我請求對象(VAR1,VAR2)不使用不推薦使用:但在施工階段我直接通過URL傳遞的查詢參數方法,這應該很簡單,以便從對象中獲取屬性。

+0

感謝您的評論,但正如我所說,我不明白這些信息的含義。我不知道如何檢索「配置API的構造函數參數」。 通過你的評論我明白這是一個非常簡單的操作,你能否提供一個簡短的例子來說明從哪裏開始? – donnadulcinea

+0

那麼,當你遵循Javadoc時,這很簡單,是的;然而,你似乎在混合的東西 - 'HttpParams' _does not_返回查詢字符串的任何內容。 – fge

回答

26

您可以使用URIBuilder對象

URIBuilder builder = new URIBuilder("http://example.com/"); 
builder.setParameter("var1", "value1").setParameter("var2", "value2"); 

HttpGet request = new HttpGet(builder.build()); 

// get back the url parameters 
List<NameValuePair> params = builder.getQueryParams(); 

我覺得你是一個有點困惑來自客戶端的getParams()方法或列舉HTTPMethod,getParams()不會返回URL參數或類似的東西,返回客戶端parameteres例如連接超時,代理,cookies ......等

在4.3.2之前,您可以使用getParams()方法(現在不推薦使用)將參數設置爲客戶端,在4.3.2之後,您可以通過RequestConfig類設置請求參數使用Builder

Builder requestConfigBuilder = RequestConfig.custom(); 
requestConfigBuilder.setConnectionRequestTimeout(1000).setMaxRedirects(1); 

,然後設置爲HttpMethod只(不象以前的客戶端)

request.setConfig(requestConfigBuilder.build()); 

更新:

如果你想從一個HttpGetHttPost得到URI參數請求對象,您可以以相同的方式使用URIBuilder

HttpGet request = new HttpGet("http://example.com/?var=1&var=2"); 

URIBuilder newBuilder = new URIBuilder(request.getURI()); 
List<NameValuePair> params = newBuilder.getQueryParams(); 
+0

謝謝@vzamanillo。這很明顯。所以參數只能由你創建才能訪問。你認爲這是一個好方法嗎? 我的意思是,假設我從第三部分收到HttpGet對象,只是HttpGet對象:在這種情況下,我無法以簡單的方式訪問查詢字符串參數? – donnadulcinea

+0

您可以使用URIBuilder訪問URI參數,請閱讀更新的帖子。 – vzamanillo

相關問題