3

有没有人能够通过https使用kso​​ap2 android连接到soap服务器?

我不断收到“主机名 <###> 未验证”的错误

我正在做

AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport (URL);
androidHttpTransport.call(SOAP_ACTION, envelope);

显然回头看看其他不适用于 android 的 ksoap,您向我们提出了通过 https 进行连接的不同调用,但我找不到在 android 版本中执行此操作的方法。

有人找到了方法或知道要使用的呼叫吗?

谢谢你的帮助

4

3 回答 3

6

好吧,您需要在 Android 设备上做两件事:

  1. 对于 SSL,您需要信任服务器证书。您可以像这里一样安装一个虚假的信任管理器(http://groups.google.com/group/android-developers/browse_thread/thread/1ac2b851e07269ba/c7275f3b28ad8bbc?lnk=gst&q=certificate然后在执行任何操作之前调用 allowAllSSL() SSL 通信/对 ksoap2 的调用)或为此付出更多努力,使其更安全并遵循 saxos 的指示,我猜。
  2. 然后你需要像这样使用 ksoap2-android 或更具体地说是类 (KeepAlive)HttpsTransportSE new KeepAliveHttpsTransportSE(host, port, file, timeout);。参数进入一个 URL 对象,因此例如访问 Jira 安装它类似于new KeepAliveHttpsTransportSE("host.whatever", 443, "/rpc/soap/jirasoapservice-v2", 1000)

顺便说一句:我在“Android 设备”上写过,因为我发现首先在 J2SE 环境中测试这些东西很有用,而这里 lib 中缺少 (KeepAlive)HttpsTransportSE 东西(我使用了 ksoap2-j2se-full-2.1.2 。罐)。只需从 ksoap2-android 获取 HttpsTransportSE、KeepAliveHttpsTransportSE 和 HttpsServiceConnectionSE 三个类的源代码,并将它们放入您的 J2SE 项目并使用它们。它可以工作,并且可以提高使用未知 Web 服务的第一步的生产力(如果您知道 Web 服务以及如何调整 ksoap2,它没有用,但它对我来说很方便,因为我是 ksoap2 及其 android 的新手摆脱)。

于 2011-01-24T06:33:11.837 回答
2

支持 https 的 android ksoap2 2.5.2 已发布

http://code.google.com/p/ksoap2-android/

问题是我不太确定如何使用它

HttpsTransportSE aht = new HttpsTransportSE(host, port, file, timeout)

我应该为“文件”参数输入什么?有人知道吗?

顺便说一句,AndroidHttpTransport 在最新版本的 ksoap2 中已弃用

于 2010-11-24T12:43:36.780 回答
2

您可以将文件名设置为空字符串 ("")。查看 ksoap 的源代码,它将参数传递给 java.net.URL 并从 Sun Javadoc 中引用文件 - “主机上的文件”。我已经放弃尝试使用 ksoap2 进行 SOAP https 调用。问题在于 Android 处理 SSL 连接的方式。唯一的解决方案似乎是创建一个本地密钥库来存储 SSL 证书并在 Apache Httpclient 周围编写一个包装器以使用该证书。所以我不妨使用 REST 来实现这些调用。猜猜这就是谷歌希望我们做的。

于 2010-12-14T12:10:14.113 回答