2011-12-24 171 views
0

我试着用下面的代码做一个HTTP DELETE,但总是收到状态400的错误信息,我想知道是否我做了错误的sonething。我不太确定是否需要使用'httpCon.getInputStream();'HTTP DELETE总是返回一个HTTP/400错误信息

import java.io.IOException; 
import java.net.HttpURLConnection; 
import java.net.URL; 

public class test { 
     public static void main(String[] args) throws IOException { 

     URL url = new URL("http://testurl.svc/web/testrequests/"+893488); 

     StringBuffer xmlString = new StringBuffer(); 

     xmlString.append("<TestRequest>"); 
     xmlString.append("<DateRequested>2011-12-23</DateRequested>"); 
     xmlString.append("<ID>893488</ID>"); 
     xmlString.append("<Version>1</Version>"); 
     xmlString.append("<TestID>19104</TestID>"); 
     xmlString.append("<ProjectName>LTS</ProjectName>"); 
     xmlString.append("<RequestedBy>ktmq331</RequestedBy>"); 
     xmlString.append("<SampleNumber>SN1033646000</SampleNumber>"); 
     xmlString.append("<Status>Requested</Status>"); 
     xmlString.append("</TestRequest>"); 

     System.out.println("xmlString :" + xmlString.toString()); 

     System.out.println("URL : " + url); 

     try { 
      System.out.println("URL : " + url); 
      HttpURLConnection httpCon = (HttpURLConnection) url.openConnection(); 
      httpCon.setDoOutput(true); 
      httpCon.setRequestProperty("Content-Type", "text/xml"); 
      httpCon.setRequestMethod("DELETE"); 
      httpCon.connect(); 
      httpCon.getInputStream(); 
      int responseCode = httpCon.getResponseCode(); 
      System.out.print("Response Code: "+responseCode); 
      String responseString = httpCon.getResponseMessage(); 
      System.out.print("Response Message: "+responseString); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

回答

-1

如果你正在做一个删除,请求不应该是text/xml类型(你甚至不使用xmlString变量)。

基本上确保此设置:

httpCon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 

取而代之的是:

httpCon.setRequestProperty("Content-Type", "text/xml"); 

而且你不需要的getInputStream()。

+0

我仍然收到相同的错误消息..你能否请确认调用HHTP DELETE的方法是否正确? – Winz 2011-12-25 14:55:34

+0

我需要做的是使用http DELETE方法删除以下URL“http://testurl.svc/web/testrequests/”+893488“中存在的值。 – Winz 2011-12-25 15:13:59