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

PayPal - Spring - 无效的 HTTP 方法:修补程序

司马宏邈
2023-03-14

当我试图在一个基于Spring MVC的应用程序上使用PayPal REST API更新一个账单计划的状态时,我遇到了一个ProtocolException。我的堆栈跟踪如下:

原因:java.net.ProtocolException:无效HTTP方法:PATCH at Java . net . httpurlconnection . setrequest method(httpurlconnection . Java:428)at sun . net . www . protocol . https . httpsurlconnectionimpl . setrequest method(httpsurlconnectionimpl . Java:374)at com . paypal . core . defaulthttpconnection . createandconfigurehttpconnection(defaulthttpconnection . Java:83)at com . paypal . core

我该如何解决这个问题?

编辑:

这是我的控制器代码:

Plan createdPlan = plan.create(accessToken);  //Create a Billing Plan
createdPlan.setState("ACTIVE");  //Change state of created plan to 'ACTIVE'
createdPlan.update(accessToken);  //Call update method of com.paypal.api.payments.Plan class

Plan.java

PayPalREST API只允许更新计费计划的PATCH请求,如下所示

共有1个答案

白子明
2023-03-14

此处的答案将取决于您使用的是经典 SDK 还是 REST SDK。

无论是哪种情况,如果你在这里查看Paypal核心SDK的源代码,似乎这个问题已经被报告和修复了。特别是在< code > com . Paypal . core . default HTTP connection (Paypal SDK中设置补丁HTTP方法的类)的代码中,您现在会看到以下注释:

* Workaround for a bug in {@code HttpURLConnection.setRequestMethod(String)}
 * The implementation of Sun/Oracle is throwing a {@code ProtocolException}
 * when the method is other than the HTTP/1.1 default methods. So to use {@code PATCH}
 * and others, we must apply this workaround.
 *
 * See issue http://java.net/jira/browse/JERSEY-639
 */

因此,我希望最新版本能够解决此问题。

因此,如果您使用的是经典SDK,只需使用版本1.6.4,因为它是最新的,并且包含修复程序(如这里所示)。

对于SDK的REST API版本,最新版本似乎是0.11.2,它依赖于CORE SDK的“最新”版本,我再次假设这可以解决您的问题。

 类似资料:
  • 尝试了HttpURLConnection的其他解决方案后,无效的HTTP方法:PATCH 我得到无效的HTTP方法:补丁异常与JAVA 7。更新JAVA不在选项中,所以我必须坚持使用解决方法。 我正在使用调用来调用这样的请求 < code>getHTTPVerb()返回字符串“POST”或“PATCH”。 使用补丁方法我遇到了问题。 在提到的问题中,我没有尝试过一种解决方案: < code>con

  • 当我尝试使用非标准的HTTP方法时,比如带有URLConnection的补丁: 我有个例外: 使用更高级别的API(如Jersey)会产生相同的错误。是否有解决办法来发出修补程序HTTP请求?

  • 当我尝试点击具有方法的请求时,我收到以下错误:PATCH 使用JMeter版本:-apache-JMeter-5.4.1 如果我能得到专家的帮助来解决他们的问题,那将会很有帮助。 谢谢

  • 我有一个带有spring框架的Java8应用程序。我们需要从应用程序中使用REST调用补丁操作。 代码片段如下: 请指教。

  • 我正在尝试升级贝宝订阅使用Rest API的计划。 https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_remission

  • 我正在ASP.NET项目中实现Paypal Express结账功能,该功能需要授权,然后取消或捕获授权金额。我使用的是他们版本=104.0的API。 就我对整个过程的理解而言,我做的每件事都是正确的: > 我在付款详细信息中调用ActionType设置为“authorize”的SetExpressCheckout方法 然后我打电话给DoExprescheckout。这是请求的代码 此请求也返回“成