Ich versuche ein PayPal-Abonnement auf Google App Engine mit dem PayPal-Java-SDK zu erstellen. Ich habe eine geringfügige Variation des Codes in diesem link implementiert, aber ich bekomme die Ausnahme unten beim Aufruf des Plan.update nach dem Erstellen des PATCH-Objekts.PayPal-Java-SDK & Google App Engine - Abonnement Reflection Error
java.lang.SecurityException: java.lang.IllegalAccessException: Reflection is not allowed on protected java.lang.String java.net.HttpURLConnection.method
Nach dem Code zu aktualisieren verwenden "context.usingGoogleAppEngine (true);", bekomme ich eine neue Nachricht:
Invalid HTTP method: PATCH
So bin assuimg ich die usingGoogleAppEngine die Verwendung von Reflection deaktiviert, aber immer noch erlaubt den PATCH-Vorgang nicht, der erforderlich ist, um den Status des Zahlungsplans in PayPal zu ändern. Hier
ist der Codeblock:
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;
}
Schließlich habe ich ein Problem im Protokoll mit dem SDK here
Ich war das sehr offensichtlich fehlt "context.usingGoogleAppEngine (true);" Methode, bevor Sie die Anrufe tätigen. Wenn Sie das jetzt hinzufügen, wirft das Programm einen weiteren Fehler auf, den ich jetzt erforsche: "Ungültige HTTP-Methode: PATCH" –
Zeigt der Stack-Trace den Fehler von GoogleAppEngineHttpConnection.java oder DefaultHttpConnection.java? [Die Javadoc Staaten] (https://github.com/paypal/PayPal-Java-SDK/blob/master/rest-api-sdk/src/main/java/com/paypal/base/GoogleAppEngineHttpConnection.java) "In Um diese Funktion zu aktivieren, legen Sie "http.GoogleAppEngine = true" in der SDK-Konfigurationsdatei fest. Daher benötigen Sie möglicherweise diesen zusätzlichen Schritt, um die korrekte HttpConnection-Klasse in App Engine zu verwenden. – Adam