Java 如何使用XML执行HTTPPUT请求?

Java 如何使用XML执行HTTPPUT请求?,java,apache,http-put,Java,Apache,Http Put,我正在学习RESTAPI,我发现执行PUT请求很困难。下面是我尝试的代码。但是记录没有成功更新 使用的URL-http://www.thomas-bayer.com/sqlrest/PRODUCT/1 试图更新的值-24.8到24.9 语言:Java DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPut putrequest = new HttpPut( "http://www.thomas

我正在学习RESTAPI,我发现执行
PUT
请求很困难。下面是我尝试的代码。但是记录没有成功更新

使用的URL-
http://www.thomas-bayer.com/sqlrest/PRODUCT/1

试图更新的值-
24.8到24.9

语言:Java

DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpPut putrequest = new HttpPut(
            "http://www.thomas-bayer.com/sqlrest/PRODUCT/1");
    List<NameValuePair> nvps = new ArrayList<NameValuePair>() {{
        add(new BasicNameValuePair("content-type", "application/xml"));
        add(new BasicNameValuePair("Server", "Apache-Coyote/1.1"));

    }};
    for (NameValuePair h : nvps) {
        putrequest.addHeader(h.getName(), h.getValue());
    }
    String xml="<?xml version=\"1.0\"?><PRODUCT xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n" +
            "    <ID>1</ID>\n" +
            "    <NAME>Chair Shoe</NAME>\n" +
            "    <PRICE>24.9</PRICE>\n" +
            "</PRODUCT>";

    putrequest.setEntity(new StringEntity(xml));

    HttpResponse response = httpClient.execute(putrequest);

    if (response.getStatusLine().getStatusCode() != 201) {
        throw new RuntimeException("Failed : HTTP error code : "
                + response.getStatusLine().getStatusCode());
    }

    httpClient.getConnectionManager().shutdown();
}
DefaultHttpClient-httpClient=newdefaulthttpclient();
HttpPutRequest=新HttpPut(
"http://www.thomas-bayer.com/sqlrest/PRODUCT/1");
列表nvps=new ArrayList(){{
添加(新的BasicNameValuePair(“内容类型”、“应用程序/xml”);
添加(新的BasicNameValuePair(“服务器”、“Apache Coyote/1.1”);
}};
用于(名称值对h:nvps){
putrequest.addHeader(h.getName(),h.getValue());
}
字符串xml=“\n”+
“1\n”+
“椅子鞋\n”+
“24.9\n”+
"";
setEntity(新的StringEntity(xml));
HttpResponse response=httpClient.execute(putrequest);
if(response.getStatusLine().getStatusCode()!=201){
抛出新的RuntimeException(“失败:HTTP错误代码:”
+response.getStatusLine().getStatusCode());
}
httpClient.getConnectionManager().shutdown();
}

我得到
500
响应,但如果记录不在那里,我可以使用
HTTPPUT
添加记录。如何解决此问题?

如果添加了此项,但您仍获得500,则有以下几种可能性:

  • 添加记录后服务器遇到错误
  • 服务器端代码被错误地放入状态代码

  • 谢谢你,拉姆,让我在未来继续关注同样的问题。请编辑问题并添加详细信息,比如你到目前为止搜索了什么,尝试了什么方法来解决它,以及你遇到了什么问题。这可能有助于读者回答您的问题:使用了哪个REST版本或哪个REST jar?