Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
paypaljavasdk&;Google应用程序引擎-订阅反射错误_Java_Rest_Google App Engine_Reflection_Paypal - Fatal编程技术网

paypaljavasdk&;Google应用程序引擎-订阅反射错误

paypaljavasdk&;Google应用程序引擎-订阅反射错误,java,rest,google-app-engine,reflection,paypal,Java,Rest,Google App Engine,Reflection,Paypal,我正在尝试使用PayPal Java SDK在Google App Engine上创建PayPal订阅。在这个实现中,我对代码做了一些改动,但是在创建补丁对象后调用Plan.update时,我遇到了下面的异常 java.lang.SecurityException: java.lang.IllegalAccessException: Reflection is not allowed on protected java.lang.String java.net.HttpURLConnection

我正在尝试使用PayPal Java SDK在Google App Engine上创建PayPal订阅。在这个实现中,我对代码做了一些改动,但是在创建补丁对象后调用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禁用了反射的使用,但仍然不允许补丁操作发生。。。这是更改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;
}
公共计划更新(APIContext上下文,计划计划)引发PayPalRESTException,IOException
{
List patchRequestList=new ArrayList();
Map value=newhashmap();
价值。出售(“状态”、“活动”);
补丁=新补丁();
patch.setPath(“/”);
patch.setValue(值);
补丁。setOp(“替换”);
补丁请求列表。添加(补丁);
试一试{
计划更新(上下文、补丁请求列表);
}
捕获(Paypalreste例外){
log.warning(“PayPalRESTException!:”+e.getMessage());
}
System.out.println(“更新。现在返回”);
退货计划;
}

最后,我在日志中用SDK创建了一个问题,我在git hub文件中没有看到补丁的导入语句。请尝试从PayPal软件包导入修补程序。

这最终在2017年1月31日得到修复:

在调用之前,我缺少了非常明显的“context.usingGoogleAppEngine(true);”方法。现在添加这个会使程序抛出另一个错误,我正在研究:“无效的HTTP方法:补丁”堆栈跟踪是否显示源于GoogleAppEngineHttpConnection.java或DefaultHttpConnection.java的错误?“为了激活此功能,请在SDK配置文件中设置'http.GoogleAppEngine=true',因此您可能需要此额外步骤在App Engine上使用正确的HttpConnection类。