Ich entwickle eine Android-App für die Verbindung zum Tridion 2011 SP1 Core Service. Bisher habe ich Android WS Stubs aus dem Kerndienst wsdl mit wsclient erstellt.Verbindung zum Tridion Core Service von einem Android-Client aus nicht möglich
Importiert diese Stubs, die Zugriff auf alle Kern-Service-Methoden ermöglichen.
Ich kann jetzt authentifizieren über die Android-Anwendung auf Tridion aber sobald ich selbst die grundlegendsten von Web-Service-Anrufe, wie getApiVersion()
auszuführen versuchen, erhalte ich die Fehlermeldung:
ReflectionHelper*java.lang.NoSuchFieldException: GetApiVersionResult.
Ich habe mich gefragt, Hat es noch jemand geschafft, eine Java Android App zu erstellen, die mit dem Core Service kommuniziert?
Interessanterweise, wenn ich den Code als Java-Anwendung, mit wsimport Stubs funktioniert alles funktioniert ein Vergnügen.
Jede Hilfe wird geschätzt. Denn hier Referenz ist ein Code-Schnipsel:
Um zu Tridion zu verbinden:
class TridionConnect extends AsyncTask<String, Integer, String> {
// Called to initiate the background activity
@Override
protected String doInBackground(String... statuses) {
try {
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("username", "password".toCharArray());
}
});
url = new URL("http://tridion-server/webservices/CoreService2011.svc?wsdl");
System.out.println(String.format("Get Service"));
service = new CoreService2011();
System.out.println(String.format("Get Client"));
client = service.getBasicHttp();
return "Authenticated To Tridion";
} catch (Exception e) {
Log.e("Authentication failure", e.toString());
e.printStackTrace();
return "Failed to authenticate";
}
}
// Called when there's a status to be updated
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
// Not used in this case
}
// Called once the background activity has completed
@Override
protected void onPostExecute(String result) { //
Toast.makeText(FullscreenActivity.this, result, Toast.LENGTH_LONG).show();
area.setText("Authenticated to Tridion OK");
}
}
Um die APIVERSION
client.getApiVersion();
UserData currentUser = client.getCurrentUser();
System.out.println(String.format("'%s' %s", currentUser.getTitle(), currentUser.getId()));
Hallo Allan, im Allgemeinen ist es am besten, die gesamte Ausnahme an 'Log.e' und nicht nur an' toString' zu übergeben: 'Log.e (" TridionConnect "," Authentifizierungsfehler ", e);' –
I Sehen Sie, dass Sie bereits gesagt haben, dass der Code in einem normalen Programm gut funktioniert. In diesem Fall kann es sich um einen Unterschied zwischen der echten JVM/JRE und Dalvik handeln. Aber ohne Ihr Problem zu reproduzieren, kann ich nicht sicher sein. –
Ich komme nun zu dem Schluss, dass dies wie oben beschrieben nicht möglich ist. Ich habe eine alternative Lösung, die ich jetzt untersuche. –