【问题标题】:Getting a 405 response code with HttpURLConnection使用 HttpURLConnection 获取 405 响应代码
【发布时间】:2014-05-06 05:40:39
【问题描述】:

当我使用HttpURLConnection 发出DELETE 请求时,我收到了HTTP 响应代码405

  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();
    }
}

我该如何提出这个请求?

【问题讨论】:

    标签: java http httpurlconnection http-delete


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您的服务器似乎有问题。我猜是 nginx,但如果不是,请告诉我。 看看here 看看如何用 HttpDavModule 编译 ngninx。还有其他服务器有这个问题,但是nginx默认没有。

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

      【讨论】:

      • 我正在运行 Apache,你是什么意思不允许他们?
      • 查看我的编辑以获取 apache 的更新。为后代留下 nginx 解决方案。
      • @user2309862 任何异常或堆栈跟踪以及405 或者你能得到发生异常的行号
      猜你喜欢
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 1970-01-01
      • 2018-11-10
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多