gpt4 book ai didi

java - PayPal - Spring - 无效的 HTTP 方法 : PATCH

转载 作者:太空宇宙 更新时间:2023-11-03 16:29:14 24 4
gpt4 key购买 nike

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

Caused by: java.net.ProtocolException: Invalid HTTP method: PATCH at java.net.HttpURLConnection.setRequestMethod(HttpURLConnection.java:428) at sun.net.www.protocol.https.HttpsURLConnectionImpl.setRequestMethod(HttpsURLConnectionImpl.java:374) at com.paypal.core.DefaultHttpConnection.createAndconfigureHttpConnection(DefaultHttpConnection.java:83) at com.paypal.core.rest.PayPalResource.execute(PayPalResource.java:364)

我该如何解决这个问题?

编辑:

这是我的 Controller 代码:

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

PayPal REST API 仅允许更新计费计划的 PATCH 请求,如记录here

最佳答案

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

无论哪种情况,如果您查看 Paypal Core SDK 的源代码here , 看来这个问题已经被报告和修复了。特别是在 com.paypal.core.DefaultHttpConnection 的代码中(这是 Paypal SDK 中设置 PATCH 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,因为它是最新的并且包含修复(如 here 所示)。

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

关于java - PayPal - Spring - 无效的 HTTP 方法 : PATCH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26820113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com