在编译带有ksoap2-android-assembly-2.5.8-jar-with-dependencies.jar
作为引用库(外部jar)的Android项目时,我收到此警告:
[2012-03-20 11:50:50 - AddressBook] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class
(org.ksoap2.transport.KeepAliveHttpsTransportSE$1) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
我正在尝试从Android客户端访问EWS SOAP服务,我的代码是:
String NAMESPACE = "http://schemas.microsoft.com/exchange/services/2006/messages";
String SOAP_ACTION = "http://schemas.microsoft.com/exchange/services/2006/messages";
String METHOD_NAME = "GetUserAvailability";
String URL = "https://vpnqrd0302.outlook.com/EWS/Exchange.asmx";
String result = null;
Object resultRequestSOAP = null;
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
List<HeaderProperty> headerList = new ArrayList<HeaderProperty>();
headerList.add(new HeaderProperty("Authorization", "Basic "
+ org.kobjects.base64.Base64
.encode("temp@tempsuer.onmicrosoft.com:Password1"
.getBytes())));
try {
androidHttpTransport.call(SOAP_ACTION, envelope, headerList);
String requestDumpString = androidHttpTransport.requestDump;
System.out.println("requestDump : " + requestDumpString);
resultRequestSOAP = envelope.getResponse(); // Output received
System.out.println("resultRequestSOAP : " + resultRequestSOAP);
result = resultRequestSOAP.toString(); // Result string
System.out.println("OUTPUT : " + result);
} catch (Exception e) {
e.printStackTrace();
}
错误是:
03-20 12:21:16.488: W/System.err(7919): SoapFault - faultcode: 'a:ErrorSchemaValidation' faultstring: 'The request failed schema validation: Could not find schema information for the element 'http://schemas.microsoft.com/exchange/services/2006/messages:GetUserAvailability'.' faultactor: 'null' detail: org.kxml2.kdom.Node@4801ce80
03-20 12:21:16.491: W/System.err(7919): at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:136)
03-20 12:21:16.491: W/System.err(7919): at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:137)
03-20 12:21:16.495: W/System.err(7919): at org.ksoap2.transport.Transport.parseResponse(Transport.java:96)
03-20 12:21:16.495: W/System.err(7919): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:189)
03-20 12:21:16.499: W/System.err(7919): at net.vivekiyer.GAL.ActiveSyncManager.getUserAvailabilityRequest(ActiveSyncManager.java:978)
03-20 12:21:16.499: W/System.err(7919): at net.vivekiyer.GAL.CorporateAddressBook$GALSearch.doInBackground(CorporateAddressBook.java:510)
03-20 12:21:16.507: W/System.err(7919): at net.vivekiyer.GAL.CorporateAddressBook$GALSearch.doInBackground(CorporateAddressBook.java:1)
03-20 12:21:16.507: W/System.err(7919): at android.os.AsyncTask$2.call(AsyncTask.java:185)
03-20 12:21:16.507: W/System.err(7919): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
03-20 12:21:16.511: W/System.err(7919): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
03-20 12:21:16.511: W/System.err(7919): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
03-20 12:21:16.511: W/System.err(7919): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
03-20 12:21:16.515: W/System.err(7919): at java.lang.Thread.run(Thread.java:1096)
答案 0 :(得分:1)
我知道这是一个老问题,但万一有人像我一样偶然发现:你提到的警告是由一个匿名内部类引起的,而且ksoap2是用java 1.3兼容性编译的(为了兼容我认为的J2ME) )。可以安全地忽略此警告,除非您对这些类进行了一些反思性工作(即使在这种情况下:只有在检查类是内部类的事实时)。
更好的是,这个特别的警告已经修复了ksoap2-android的2.6.4版本(见this pull request on github)。
您的错误完全不相关,更有可能是因为您尝试拨打的网络服务使用不当造成的。