放置请求参数未设置

时间:2013-01-28 09:11:25

标签: java http parameters

这可能是标准的东西但无法让它变得w。 我正在使用org.apache.commons.httpclient.methods从我的Java代码发出Http请求。在一个实例中,我要发出PUT请求并传递一些参数。我是按照以下方式做的:

PutMethod putMethod = new PutMethod(url);
putMethod.getParams().setParameter("param1", "param1Value");
putMethod.getParams().setParameter("param2", "param2Value");
httpClient.executeMethod(putMethod);

但是在服务器上,当它试图读取这些参数时 - 它只能获得null

但是,当我将url修改为url?param1=param1Value&param2=param2Value时,它可以正常工作。

如何使用setParameter方法使其工作?

2 个答案:

答案 0 :(得分:1)

要将查询参数添加到PutMethod,请遵循此方法。

    NameValuePair[] putParameters = new NameValuePair[2];   
    putParameters[0] = new NameValuePair(Param1, value1);       
    putParameters[1] = new NameValuePair(Param2, value2);   


    HttpClient client = new HttpClient();
    PutMethod putMethod = new PutMethod(url);       

    putMethod.setQueryString(putParameters);

然后致电,

int response = client.executeMethod(putMethod);

您可以使用

而不是putMethod.setQueryString(putParameters);
  

putMethod.setRequestBody(EncodingUtil.formUrlEncode(putParameters," UTF-8"));   (这已被弃用)

GetMethod,PostMethod在添加查询参数时与上述代码相比略有不同。

更多代码示例:http://www.massapi.com/class/pu/PutMethod.html

希望这会有所帮助。

答案 1 :(得分:-1)

您的服务器端代码必须支持PUT方法

例如,如果它是一个Servlet,你可以包含方法

doPUT(); // your put request will be delivered to this method

如果您使用基于REST的框架,例如jersey

你可以使用

@PUT 
   Response yourPutMethod(){..}