我已经在尝试 Java 中的交换 Web 服务。它运行良好。它已发送电子邮件或正确接收电子邮件。
我的 Java 代码如下所示:
public static void main(String[] args) {
try {
Locale.setDefault(Locale.ENGLISH);
ExchangeService service = new ExchangeService();
WebCredentials webCredentials = new WebCredentials("asdasd@asasd.onmicrosoft.com", "asdasdasd");
URI url = new URI("https://asdasd802.outlook.com/ews/Exchange.asmx");
service.setCredentials(webCredentials);
service.setUrl(url);
System.out.println(service.getRequestedServerVersion());
msg.setSubject("Hello world!");
msg.setBody(MessageBody.getMessageBodyFromText("Sent using the EWS Managed API."));
msg.getToRecipients().add("asdasd@gmail.com");
msg.send();
} catch (Exception ex) {
ex.printStackTrace();
//System.out.println(ex.toString());
}
}
当我使用以下代码在 android 中尝试此操作时:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
Button b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Locale.setDefault(Locale.ENGLISH);
try {
ExchangeService service = new ExchangeService();
WebCredentials webCredentials = new WebCredentials(
"asdasd@asdasd.onmicrosoft.com",
"asdasd");
URI url = new URI("https://asdasd.outlook.com/ews/Exchange.asmx");
service.setCredentials(webCredentials);
service.setUrl(url);
EmailMessage msg= new EmailMessage(service);
msg.setSubject("Hello world!");
msg.setBody(MessageBody.getMessageBodyFromText
("Sent using the EWS Managed API."));
msg.getToRecipients().add("asdasd@gmail.com");
msg.send();
} catch (Exception ex) {
//ex.printStackTrace();
System.out.println(ex.toString());
}
}
});
}
单击按钮时出现一些错误。
这是来自控制台的消息:
[2011-12-15 17:06:25 - MobileApplication1] Dx 警告:忽略匿名内部类的 InnerClasses 属性 (org.apache.commons.httpclient.HttpMethodBase$1) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。忽视的后果 此警告是此类上的反射操作将错误地 表明它*不是*内部类。 [2011-12-15 17:06:25 - MobileApplication1] Dx 警告:忽略匿名内部类的 InnerClasses 属性 (org.apache.commons.httpclient.protocol.ControllerThreadSocketFactory$1) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。忽视的后果 此警告是此类上的反射操作将错误地 表明它*不是*内部类。 [2011-12-15 17:06:25 - MobileApplication1] Dx 警告:忽略匿名内部类的 InnerClasses 属性 (org.apache.commons.logging.impl.LogFactoryImpl$1) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。忽视的后果 此警告是此类上的反射操作将错误地 表明它*不是*内部类。 [2011-12-15 17:06:25 - MobileApplication1] Dx 警告:忽略匿名内部类的 InnerClasses 属性 (org.apache.commons.logging.impl.LogFactoryImpl$2) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。忽视的后果 此警告是此类上的反射操作将错误地 表明它*不是*内部类。 [2011-12-15 17:06:25 - MobileApplication1] Dx 警告:忽略匿名内部类的 InnerClasses 属性 (org.apache.commons.logging.impl.LogFactoryImpl$3) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。忽视的后果 此警告是此类上的反射操作将错误地 表明它*不是*内部类。 [2011-12-15 17:06:25 - MobileApplication1] Dx 警告:忽略匿名内部类的 InnerClasses 属性 (org.apache.commons.logging.impl.SimpleLog$1) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。忽视的后果 此警告是此类上的反射操作将错误地 表明它*不是*内部类。 [2011-12-15 17:06:25 - MobileApplication1] Dx 警告:忽略匿名内部类的 InnerClasses 属性 (org.apache.commons.logging.impl.WeakHashtable$1) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。忽视的后果 此警告是此类上的反射操作将错误地 表明它*不是*内部类。 [2011-12-15 17:06:25 - MobileApplication1] Dx 警告:忽略匿名内部类的 InnerClasses 属性 (org.apache.commons.logging.LogFactory$1) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。忽视的后果 此警告是此类上的反射操作将错误地 表明它*不是*内部类。 [2011-12-15 17:06:25 - MobileApplication1] Dx 警告:忽略匿名内部类的 InnerClasses 属性 (org.apache.commons.logging.LogFactory$2) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。忽视的后果 此警告是此类上的反射操作将错误地 表明它*不是*内部类。 [2011-12-15 17:06:25 - MobileApplication1] Dx 警告:忽略匿名内部类的 InnerClasses 属性 (org.apache.commons.logging.LogFactory$3) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。忽视的后果 此警告是此类上的反射操作将错误地 表明它*不是*内部类。 [2011-12-15 17:06:25 - MobileApplication1] Dx 警告:忽略匿名内部类的 InnerClasses 属性 (org.apache.commons.logging.LogFactory$4) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。忽视的后果 此警告是此类上的反射操作将错误地 表明它*不是*内部类。 [2011-12-15 17:06:25 - MobileApplication1] Dx 警告:忽略匿名内部类的 InnerClasses 属性 (org.apache.commons.logging.LogFactory$5) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。忽视的后果 此警告是此类上的反射操作将错误地 表明它*不是*内部类。 [2011-12-15 17:06:25 - MobileApplication1] Dx 警告:忽略匿名内部类的 InnerClasses 属性 (org.apache.commons.logging.LogFactory$6) 不附带 关联的 EnclosureMethod 属性。这个类可能是由一个 不针对现代 .class 文件格式的编译器。推荐的 解决方案是使用最新的编译器从源代码重新编译类 并且没有指定任何“-target”类型选项。忽视的后果 此警告是此类上的反射操作将错误地 表明它*不是*内部类。 切换突出显示在新窗口中打开全选
这是来自日志聊天的错误:
09-21 09:10:17.039:E/AndroidRuntime(4126):致命异常:主要 09-21 09:10:17.039: E/AndroidRuntime(4126): java.lang.VerifyError: microsoft.exchange.webservices.data.EwsServiceXmlWriter 09-21 09:10:17.039:E/AndroidRuntime(4126):在 microsoft.exchange.webservices.data.ServiceRequestBase.emit(未知来源) 09-21 09:10:17.039:E/AndroidRuntime(4126):在 microsoft.exchange.webservices.data.ServiceRequestBase.validateAndEmitRequest(未知来源) 09-21 09:10:17.039:E/AndroidRuntime(4126):在 microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(未知来源) 09-21 09:10:17.039:E/AndroidRuntime(4126):在 microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(未知来源) 09-21 09:10:17.039:E/AndroidRuntime(4126):在 microsoft.exchange.webservices.data.ExchangeService.internalCreateItems(未知来源) 09-21 09:10:17.039:E/AndroidRuntime(4126):在 microsoft.exchange.webservices.data.ExchangeService.createItem(未知来源) 09-21 09:10:17.039:E/AndroidRuntime(4126):在 microsoft.exchange.webservices.data.Item.internalCreate(未知来源) 09-21 09:10:17.039:E/AndroidRuntime(4126):在 microsoft.exchange.webservices.data.EmailMessage.internalSend(未知来源) 09-21 09:10:17.039:E/AndroidRuntime(4126):在 microsoft.exchange.webservices.data.EmailMessage.send(未知来源) 09-21 09:10:17.039: E/AndroidRuntime(4126): 在 com.MobileApplication1.android.MainScreenActivity$1.onClick(MainScreenActivity.java:60) 09-21 09:10:17.039: E/AndroidRuntime(4126): 在 android.view.View.performClick(View.java:2485) 09-21 09:10:17.039: E/AndroidRuntime(4126): 在 android.view.View$PerformClick.run(View.java:9080) 09-21 09:10:17.039: E/AndroidRuntime(4126): 在 android.os.Handler.handleCallback(Handler.java:587) 09-21 09:10:17.039: E/AndroidRuntime(4126): 在 android.os.Handler.dispatchMessage(Handler.java:92) 09-21 09:10:17.039: E/AndroidRuntime(4126): 在 android.os.Looper.loop(Looper.java:123) 09-21 09:10:17.039: E/AndroidRuntime(4126): 在 android.app.ActivityThread.main(ActivityThread.java:3687) 09-21 09:10:17.039: E/AndroidRuntime(4126): 在 java.lang.reflect.Method.invokeNative(Native Method) 09-21 09:10:17.039: E/AndroidRuntime(4126): 在 java.lang.reflect.Method.invoke(Method.java:507) 09-21 09:10:17.039: E/AndroidRuntime(4126): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 09-21 09:10:17.039: E/AndroidRuntime(4126): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 09-21 09:10:17.039: E/AndroidRuntime(4126): at dalvik.system.NativeStart.main(Native Method) 切换突出显示在新窗口中打开全选
我已经添加了这些库。
Exchange Web 服务 (EWS) Java 托管 API 由单个包 microsoft.exchange.webservices.data 组成,并且需要以下第 3 方库
- Apache Commons HttpClient (commons-httpclien.jar)
- Apache Commons 编解码器 (commons-codec.jar)
- Apache Commons 日志记录 (commons-codec.jar)
- JCIFS (jcifs.jar)
- EWS Java API。
问题是什么?
我做了一些研究。我看到一些 Android 已经在 sdk 库中有日志记录和 httpclient 的地方。