当前位置: 首页 > 知识库问答 >
问题:

对web服务的post请求的请求返回HTTP状态405-不允许使用方法

祁嘉木
2023-03-14

我制作了一个具有三个路径参数的POST web服务。

但当我尝试通过url请求此web服务时,我得到HTTP状态405-不允许使用该方法

但是同样的方法有效,如果我将Web服务更改为@GET

@POST
@Path("/authCode/{code}/{token}/{secret}")
public Response getToken(@PathParam("code") String code,@PathParam("token") String token,@PathParam("secret") String secret) {

    String output = code;
    System.out.println("code output"+output);

    System.out.println("********A basic user profile call into a subresource return data in JSON********"); //$NON-NLS-1$
    String url = "http://api.linkedin.com/v1/people/~/summary";

请求URL:

http://localhost:8080/SocialNetwork/rest/linkedin/authCode/17842/81--sdfsdf-8a57-adfd-9ddb-dfdddfdf/sdfsdfsd-fb54-402d-9a85-dsfdsfsdf

这是我得到的回应

<html>
<head>
    <title>Apache Tomcat/7.0.78 - Error report</title>
    <style>
        <!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}-->
    </style>
</head>
<body>
    <h1>HTTP Status 405 - Method Not Allowed</h1>
    <HR size="1" noshade="noshade">
    <p>
        <b>type</b> Status report
    </p>
    <p>
        <b>message</b>
        <u>Method Not Allowed</u>
    </p>
    <p>
        <b>description</b>
        <u>The specified HTTP method is not allowed for the requested resource.</u>
    </p>
    <HR size="1" noshade="noshade">
    <h3>Apache Tomcat/7.0.78</h3>
</body>

任何帮助将不胜感激!

共有1个答案

巢烨
2023-03-14

这是因为服务器不允许POST方法。只允许使用GET方法。405不允许的方法表明了这一点。

要使POST请求工作,需要在服务器上HTTP请求的标头中启用POST请求方法。通常只需为此类调用添加endpoint即可完成此操作。

例如,对于GET请求,您的代码可能如下所示:

router.GET('/some-endpoint', someGETHandlerFunc)

要为POST启用相同的endpoint,您需要添加:

router.POST('/some-endpoint', somePOSTHandlerFunc)

一起:

router.GET('/some-endpoint', someGETHandlerFunc)
router.POST('/some-endpoint', somePOSTHandlerFunc)

现在回答你的问题。。。

您的请求终结点与POST终结点不匹配。

问题中指出的POST终点是:

/authCode/{code}/{token}/{secret}

您提供的请求URL与此不匹配,因为它前面有社交网络/rest/linkedin。除非服务器endpoint中的装饰器也预先准备了这一点,否则这可能是您的错误。

 类似资料:
  • 我必须做一个帖子,但我得到错误405 在本网站->http://177.66.89.34:8079/transparencia/#我需要迭代页面顶部的2个下拉菜单的选项。 首先,我会在“escolha o exercício”旁边加上选项:然后,我会在“escolha a entidade”旁边加上选项: 用下面的代码,我在“EscolhaoExercício:”上面写了一篇文章 我希望在pars

  • 我正在使用spring mvc设置一个rest api,并且大多数配置都是通过spring boot项目自动设置的。在前端,我使用angularjs及其$HTTP模块向服务器发出获取资源的ajax请求。资源URL在my controller类中定义,但仅匹配GET URL。我试过PUT和POST,但它们分别返回405方法不允许和403禁止. 我的控制器看起来像这样 而对与url不匹配的服务器的请求

  • 我有一个使用Jersey的非常简单的endpoint。我的URL是静态的,它不需要任何请求参数。看起来是这样的: 但是,每当我请求此URL时,我总是会收到一个HTTP状态代码405-方法不允许。 奇怪的是,如果我更改路径注释并定义一个路径变量,例如路径(“/图表/{blah}”),它就可以正常工作。 有人知道为什么我必须定义一个路径变量才能使其工作吗?我不需要路径变量,添加一个只是为了获得200响

  • 问题内容: 我收到此错误: 我正在尝试做的是创建一个带有下拉框的表单,该表单会根据在另一个下拉框中选择的其他值进行填充。例如,当我在框中选择一个名称时,应运行.jsp页面中的函数,然后提交提交的页面,然后在框中再次加载相应的值。 但是我收到此HTTP状态405错误。我在互联网上搜索了解决方案,但找不到任何有帮助的方法。这是我的代码的相关部分: jsp页面的一部分 控制器的一部分: 我怎么会得到这个

  • 我收到这个错误:< code>HTTP状态405 -不支持请求方法“POST ” 我想做的是创建一个带有下拉框的表单,该下拉框根据在另一个下拉框中选择的其他值进行填充。例如,当我在框中选择一个名称时,应该运行. jsp页面中的函数,然后提交的页面再次加载框中的相应值。 但是我收到此HTTP状态405错误。我已经在互联网上搜索了解决方案,但找不到任何有帮助的东西。以下是我的代码的相关部分: jsp页

  • 我有Spring MVC的Spring Security。当我尝试注册时,它给了我405个不支持的“帖子”。我已在安全配置中禁用csrf令牌。让我知道我哪里出错了? 我的登录页面: 授权由LoginController处理: 这是我的Spring Security配置类: