【问题标题】:HTTP Status 405 - Method Not Allowed Error on Invoking a DELETE method using WebServicesHTTP 状态 405 - 使用 WebServices 调用 DELETE 方法时出现方法不允许错误
【发布时间】:2012-10-01 12:25:33
【问题描述】:

我正在尝试使用以下 @DELETE 方法从“联系人”表中删除“联系人”(使用 Jersey 框架(JAX-RS 实现)

@DELETE
@Path("/delete/{contact}")
public String deleteContact(@PathParam("contact") String name) throws ClassNotFoundException, SQLException {

    String response = DAOaccess.deleteContact(name);
    return response; 
}

以下 url 用于从浏览器调用 web 服务:

/contacts/delete/contactname

但 HTTP 状态 405 - Method Not Allowed 在这样做时抛出。

可能是什么原因?我该如何克服这个问题?

【问题讨论】:

  • /contacts/delete/etc 是正确的 URL,即与 /delete/etc 相对吗?
  • @MartinWilson 我在课堂级别使用@Path(/contacts) 注释
  • 嗯,@DELETE 表示删除 HTTP 方法,对吧?而且您正在调用 GET HTTP 方法,所以,我认为您应该使用另一种测试方法:)
  • @PlínioPantaleão 这是否意味着我无法从 url 访问“删除”网络服务方法?我确实尝试通过代码调用服务,但这也会引发错误。我已将其作为一个单独的问题发布在这里:stackoverflow.com/questions/12670169/…

标签: java web-services rest jersey jax-rs


【解决方案1】:

网址 = /contacts/delete/contactname

405 因为

似乎删除总是表现得像submit (Post method) 并且您正尝试从URL 调用get 方法。 This is not possible to call the post method as like get。 如果你真的想从浏览器调用这个网络服务进行测试,只需下载一个Mozilla plugin (Poster),它会帮助你提交你所有方法类型的网络服务。

【讨论】:

  • 我在 2014 年的一个热门搜索结果中发现了这个问题,所以我需要对此进行一些更新。有一个非常好的客户端用于测试 web 服务。所以请随意看看:getpostman.com 这是一个非常好的模拟 Web 客户端的工具。您可以在每次调用和所需的每种类型时添加集合 - GET、POST、PUT、DELETE、PATCH,...
【解决方案2】:

如果您使用的是 Firefox,请使用 this 插件来测试您的服务。当您从浏览器直接点击 URL 时,它会作为 @GET 请求发送,在这种情况下是不允许的。 RestClient 也可作为独立应用程序使用。如果您需要更多功能,请尝试SoapUI。我还回复了您的question on @DELETE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2023-04-07
    • 2017-06-15
    • 2013-10-09
    • 2020-02-13
    • 2017-09-03
    • 2021-02-04
    相关资源
    最近更新 更多