当我试图在一个基于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请求,如下所示
此处的答案将取决于您使用的是经典 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。这是请求的代码 此请求也返回“成