Tridion2011SP1コアサービスに接続するためのAndroidアプリを開発しています。これまで、wsclientを使用してコアサービスwsdlからAndroidWSスタブを作成しました。
すべてのコアサービスメソッドへのアクセスを許可するスタブをインポートしました。
Androidアプリケーションを介してTridionに認証できるようになりましたが、などの最も基本的なWebサービス呼び出しを実行しようとするとgetApiVersion()
、次のエラーが発生します。
ReflectionHelper * java.lang.NoSuchFieldException:GetApiVersionResult。
コアサービスと通信するJavaAndroidアプリを他の誰かが作成できたのだろうか?
興味深いことに、コードをJavaアプリケーションとして実行すると、wsimportスタブを使用するとすべてがうまく機能します。
助けていただければ幸いです。参考までに、コードスニペットを次に示します。
Tridionに接続するには:
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");
}
}
ApiVersionを取得するには
client.getApiVersion();
UserData currentUser = client.getCurrentUser();
System.out.println(String.format("'%s' %s", currentUser.getTitle(), currentUser.getId()));