【发布时间】:2017-05-04 02:10:15
【问题描述】:
我正在尝试使用 PayPal-Java-SDK 在 Google App Engine 上创建一个 PayPal 订阅。我在这个 link 实现的代码中略有不同,但是在创建 PATCH 对象后调用 Plan.update 时出现以下异常。
java.lang.SecurityException: java.lang.IllegalAccessException: Reflection is not allowed on protected java.lang.String java.net.HttpURLConnection.method
更新代码以使用“context.usingGoogleAppEngine(true);”后,我收到一条新消息:
Invalid HTTP method: PATCH
所以我假设 usingGoogleAppEngine 禁用反射的使用,但仍然不允许发生 PATCH 操作...这是更改 PayPal 中付款计划状态所必需的。
这里是代码块:
public Plan update(APIContext context, Plan plan) throws PayPalRESTException, IOException
{
List<Patch> patchRequestList = new ArrayList<Patch>();
Map<String, String> value = new HashMap<String, String>();
value.put("state", "ACTIVE");
Patch patch = new Patch();
patch.setPath("/");
patch.setValue(value);
patch.setOp("replace");
patchRequestList.add(patch);
try{
plan.update(context, patchRequestList);
}
catch (PayPalRESTException e) {
log.warning("PayPalRESTException!: " + e.getMessage());
}
System.out.println("updated. now returning.");
return plan;
}
最后,我在日志中使用 SDK here 创建了一个问题
【问题讨论】:
-
我错过了非常明显的“context.usingGoogleAppEngine(true);”调用之前的方法。现在添加这个会使程序抛出另一个错误,我现在正在研究:“无效的 HTTP 方法:PATCH”
-
堆栈跟踪是否显示源自 GoogleAppEngineHttpConnection.java 或 DefaultHttpConnection.java 的错误? The Javadoc states "要激活此功能,请在 SDK 配置文件中设置 'http.GoogleAppEngine = true'",因此您可能需要此额外步骤才能在 App Engine 上使用正确的 HttpConnection 类。
标签: java rest google-app-engine reflection paypal