Android ksoap2通过https

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

我一直收到“主机名未经validation”的错误

我正在做

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

显然回顾其他ksoap不是为了你的机会我们给我们一个不同的呼叫连接通过https,但我找不到在Android版本中的方法。

有人找到了一种关于或知道使用呼叫的方法吗?

谢谢你的帮助

android ksoap2 2.5.2是支持https的

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

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

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

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

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

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

  1. 对于SSL,您需要信任服务器证书。 您可以在此处安装假信任管理器( http://groups.google.com/group/android-developers/browse_thread/thread/1ac2b851e07269ba/c7275f3b28ad8bbc?lnk=gst&q=certificate ,然后在执行任何操作之前调用allowAllSSL() SSL通信/调用ksoap2)或者为此付出更多努力,让它更安全并遵循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)

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

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