微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 警告:忽略匿名内部类的InnerClasses属性(org.ksoap2.transport.KeepAliveHttpsTransportSE $1)

当使用kso​​ap2- 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)

解决方法

我知道这是一个老问题,但万一有人像我一样偶然发现:你提到的警告是由一个匿名的内部类引起的,而且ksoap2是用java 1.3兼容性编译的(为了兼容我认为的J2ME).除非您对这些类进行一些反思性工作(甚至在这种情况下:只有在检查类是内部类的事实时)才能安全地忽略此警告.

更好的是,这个特殊警告已经修复了ksoap2-android的2.6.4版本(见this pull request on github).

您的错误完全不相关,更可能是由于您尝试调用的Web服务使用不当造成的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐