我正在開發一個Android應用程序連接到的tridion 2011 SP1核心服務連接到外表套上核心服務。 到目前爲止,我已經使用wsclient從核心服務wsdl創建了Android WS Stub。無法從Android客戶端
進口的存根,允許訪問所有的核心服務的方法。
我現在可以驗證通過Android應用程序的tridion但只要我嘗試執行甚至連最基本的Web服務調用,如getApiVersion()
,我得到的錯誤:
ReflectionHelper*java.lang.NoSuchFieldException: GetApiVersionResult.
我想知道是否有其他人設法創建了一個與Core Service進行通信的java android應用程序?
有趣的是,如果我運行代碼的Java應用程序,使用wsimport的存根一切正常治療。
任何幫助表示讚賞。僅供參考這裏的代碼片段:
要連接到套上:
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()));
嗨艾倫,一般最好是整個例外傳遞給'Log.e'並不僅僅是'toString':'Log.e(「TridionConnect」,「身份驗證失敗」,E);' –
我只是看到你已經說過這些代碼在正常程序中工作正常。在這種情況下,它可能是真正的JVM/JRE和Dalvik之間的區別。但是如果沒有再現你的問題,我不能確定。 –
我現在得出結論,這是不可能的,如上所述。我現在正在研究一個替代解決方案。 –