Tôi đang phát triển một ứng dụng Android để kết nối với Tridion 2011 SP1 Core Service. Cho đến nay tôi đã tạo Android WS Stubs từ wsdl dịch vụ cốt lõi bằng wsclient.Không thể kết nối với Dịch vụ cốt lõi Tridion từ máy khách Android
Nhập các sơ khai đó, cho phép truy cập vào tất cả các phương pháp dịch vụ cốt lõi.
bây giờ tôi có thể xác thực để Tridion qua ứng dụng Android nhưng ngay sau khi tôi cố gắng thực hiện ngay cả những cơ bản nhất của cuộc gọi dịch vụ web, chẳng hạn như getApiVersion()
, tôi nhận được lỗi:
ReflectionHelper*java.lang.NoSuchFieldException: GetApiVersionResult.
tôi đã tự hỏi có ai khác quản lý để tạo ra một ứng dụng Android java giao tiếp với Dịch vụ cốt lõi không?
Điều thú vị là đủ, nếu tôi chạy mã dưới dạng ứng dụng java, việc sử dụng wsimport sẽ làm mọi thứ hoạt động tốt.
Bất kỳ trợ giúp đánh giá cao. Để tham khảo ở đây là một đoạn mã:
Để kết nối với 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");
}
}
Để có được ApiVersion
client.getApiVersion();
UserData currentUser = client.getCurrentUser();
System.out.println(String.format("'%s' %s", currentUser.getTitle(), currentUser.getId()));
Xin chào Allan, nói chung tốt nhất là chuyển toàn bộ ngoại lệ sang 'Log.e' và không chỉ là 'toString':' Log.e ("TridionConnect", "Authentication Failure", e); ' –
I chỉ thấy rằng bạn đã nói mã hoạt động tốt trong một chương trình thông thường. Trong trường hợp đó, nó có thể là một sự khác biệt giữa JVM/JRE thực và Dalvik. Nhưng mà không tái tạo vấn đề của bạn, tôi không thể chắc chắn. –
Tôi đang đi đến kết luận rằng điều này là không thể như mô tả ở trên. Tôi có một giải pháp thay thế mà tôi hiện đang điều tra. –