【问题标题】:405 Error when sending HTTP request throw JAVA发送 HTTP 请求抛出 JAVA 时出现 405 错误
【发布时间】:2016-01-13 10:06:24
【问题描述】:

我尝试发送 http 请求并使用 Java 代码获取结果

这是服务器端:

public class Testws {
@GET
    @Path("/test/{id}")
    @Produces("application/xml")
    public Integer getAssets(@PathParam("id") int id){
        }
}

这是客户端:

URL url = new URL("http://xxx/route/test/1");
HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
connection.setDoOutput(true);
connection.connect();
final int responseCode = connection.getResponseCode();

当我运行这个 java 代码时,我得到了 405 状态码,但是当我将链接 (http://xxx/route/test/1) 直接放在浏览器中时,它工作正常,我得到了 200 作为响应码。 我该如何解决这个问题?

【问题讨论】:

  • 当你想要一个 GET 请求时,为什么要使用setDoOutput(true)
  • 试试connection.sendGet();
  • 谢谢大家的回复。 @Fran: 连接.sendGet();不工作@Thilo:你说得对,问题是setDoOutput(true)我删除了它,现在它工作正常谢谢。

标签: java web-services http


【解决方案1】:

您的错误意味着您使用错误的HTTP 方法查询服务器。

您在浏览器中粘贴的内容将作为GET 方法发送。

您的代码没有使用GET,因此要强制使用HTTP 方法,请使用HttpConnection.setRequestMethod

另外,setDoOutput(true) 不会让你使用GET,请参阅此主题: What exactly does URLConnection.setDoOutput() affect?.

删除此行,您将使用默认的 HTTP 方法,即GET

public void setRequestMethod(字符串方法) 抛出协议异常

设置URL请求的方法,其中之一:GET POST HEAD OPTIONS PUT DELETE TRACE是合法的, 受协议限制。 默认方法是 GET

【讨论】:

  • 谢谢!我已经删除了setDoOutput(true),现在可以正常使用了。
猜你喜欢
  • 1970-01-01
  • 2014-11-20
  • 2013-08-25
  • 2017-09-09
  • 2017-05-19
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
相关资源
最近更新 更多