使用HttpURLConnection获取405响应代码

时间:2014-05-06 05:40:40

标签: java http httpurlconnection http-delete

当我使用HTTP发出405请求时,我收到了HttpURLConnection个回复代码DELETE

  public void makeDeleteRequest(String objtype,String objkey)
{
    URL url=null;
    String uri="http://localhost:8180/GoogleMapsLoadingTest/rest/GoogleMapsErp/";
    HttpURLConnection conn=null;
    try {
        url=new URL(uri);
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        conn=(HttpURLConnection) url.openConnection();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    conn.setDoInput(true);
    conn.setDoOutput(true);
    try {
        System.out.println(conn.getResponseCode());
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    try {
        conn.setRequestMethod("DELETE");
    } catch (ProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

我该如何提出此请求?

2 个答案:

答案 0 :(得分:2)

405状态代码表示您指定的资源不允许使用您的方法(DELETE);在这种情况下,看起来像一个完整的REST端点目录。您应该对要删除的特定项目使用DELETE;也许你在构造URL时忘了实际使用方法参数?

答案 1 :(得分:0)

这似乎是您服务器的问题。我猜nginx,但如果没有,请告诉我。 看看here,了解如何使用HttpDavModule编译ngninx。还有其他服务器存在此问题,但nginx默认情况下没有。

如果您正在运行Apache,请检查您的模块配置,看看您是否禁止使用它们。 Here's关于先前解决方案的帖子。不幸的是,此问题通常特定于已安装的模块。但是,在vanilla安装上,您通常只允许DELETE(请参阅配置文件以及该链接的OP)