Android ksoap2通过https

时间:2010-02-11 22:12:19

标签: java android soap ksoap2

有没有人能够通过https?

使用kso​​ap2 android连接到soap服务器

我一直收到“主机名< ###>未经过验证”的错误

我在做

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

显然回头看看其他ksoap不是因为你对我们的一个不同的呼叫通过https连接,但我找不到在Android版本中做到这一点的方法。

有人找到方法或知道要使用的电话吗?

感谢您的帮助

3 个答案:

答案 0 :(得分:6)

嗯,你需要在Android设备上做两件事:

  1. 对于SSL,您需要信任服务器证书。你可以在这里安装一个虚假的信任管理器(http://groups.google.com/group/android-developers/browse_thread/thread/1ac2b851e07269ba/c7275f3b28ad8bbc?lnk=gst&q=certificate然后在你对ksoap2进行任何SSL通信/调用之前调用allowAllSSL())或者为此付出更多的努力,让它更安全并遵循saxos的指示,我猜。
  2. 然后你需要使用kso​​ap2-android或更具体的类(KeepAlive)HttpsTransportSE,就像这个new KeepAliveHttpsTransportSE(host, port, file, timeout);一样。参数进入URL对象,例如要访问Jira安装,它就像new KeepAliveHttpsTransportSE("host.whatever", 443, "/rpc/soap/jirasoapservice-v2", 1000)
  3. 顺便说一句:我在“Android设备”上写道,因为我发现在J2SE环境中首先测试这些东西很有用,这里lib中缺少(KeepAlive)HttpsTransportSE的东西(我用了ksoap2-j2se-full- 2.1.2.jar)。只需从ksoap2-android获取三个类HttpsTransportSE,KeepAliveHttpsTransportSE和HttpsServiceConnectionSE的源代码,并将它们放入J2SE项目并使用它们。它的工作原理是提高生产力,以获得未知Web服务的第一步(如果您知道Web服务以及如何调整ksoap2,它没用,但它对我来说很方便,因为我是ksoap2及其android的新手分拆)。

答案 1 :(得分:2)

android ksoap2 2.5.2支持https

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

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

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

我为“文件”参数输入了什么?谁有任何想法?

btw AndroidHttpTransport在最新版本的ksoap2中被弃用

答案 2 :(得分:2)

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