2013-03-18 54 views
1
HttpClient httpclient = new DefaultHttpClient(); 
     try { 
      HttpPost httpMethod = new HttpPost(this.transformURL(request)); 
      BasicHttpParams params = new BasicHttpParams(); 
      params.setParameter("name", name); 
      httpMethod.setParams(params); 
      ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
      httpclient.execute(httpMethod, responseHandler); 
     }catch{ 
      LOG.error("Error"); 
     } finally { 
      httpclient.getConnectionManager().shutdown(); 
     } 

我上面的代碼,我想在一個名字變量傳遞的參數設置爲另一種方法,通過request.getParameter("name")得到回升。試圖增加一個HTTP參數,但它不工作

它似乎沒有工作,當我調試我可以看到參數設置,但是當我按照它通過下一個方法得到執行,它沒有拿起參數。

有什麼建議嗎?

編輯:

我加了這一點,並

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 
      nameValuePairs.add(new BasicNameValuePair("name", request.getParameter("name"))); 
      httpMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

回答

0

你檢查this example它的工作很大?它像你一樣使用類BasicNameValuePair而不是BasicHttpParams

此外,documentation for the version 3.x of HttpClient做的:

PostMethod post = new PostMethod("http://jakarata.apache.org/"); 
    NameValuePair[] data = { 
     new NameValuePair("user", "joe"), 
     new NameValuePair("password", "bloggs") 
    }; 
    post.setRequestBody(data); 
    // execute method and handle any error responses. 
    ... 
    InputStream in = post.getResponseBodyAsStream(); 
    // handle response. 

更新:該BasicHttpParams類是HttpParams接口,如下面@Perception指出的實現,是一組自定義行爲屬性」的HTTP客戶端「。從HttpParams javadoc「HttpParams有望用於'一次寫入 - 多次讀取'模式。一旦初始化,HTTP參數不會在HTTP消息處理過程中發生變異。」

+1

具體而言,HttpParams類用於設置自定義HTTP客戶端行爲的變量。它不是將信息傳遞給服務器端。這就是爲什麼OP的代碼不起作用。如果您將答案擴展爲包含此信息,我會+1。 – Perception 2013-03-18 16:33:29

+0

這讓我到了需要去的地方。我會用代碼更新我的主帖。 – envinyater 2013-03-18 17:25:08

相關問題