2010-02-11 179 views
3

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

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

我做

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

显然回头看其他KSOAP这是不为Android您更换给我们一个不同的调用来通过https连接,但我无法找到一种方式来执行它的android版本。

任何人找到了一种方式或知道使用电话?

感谢您的帮助

+0

您是否找到了解决方案?我在这里遇到同样的问题。 有通过HTTPS发送SOAP请求的替代方法吗? – RobGThai

+0

不,我仍然找到了答案,除了移动休息/ json –

回答

2

的Android 2.5.2 ksoap2是出于支持HTTPS

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

的问题是我不很清楚如何使用它

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

什么我应该输入“文件”参数吗?任何人有任何想法?

BTW AndroidHttpTransport在ksoap2

+1

请参阅参数文档https://gist.github.com/908048 ...我将在稍后添加到javadoc –

2

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

+0

如果您要建立安全连接到REST服务与本地密钥库,你可以看看我的博客条目,地址为http://blog.antoine.li/index.php/2010/10/android-trusting-ssl-certificates/ 它提供了详细的步骤逐步描述。 希望它有帮助 – saxos

+0

谢谢它帮助了很多。在寻找类似的东西时我确实看到了它。在清理我的代码后,我会将一些评论添加到您的博文中。 –

+0

谢谢。欢迎发表评论;) – saxos

6

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

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

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

+0

谢谢。这就像一个魅力。 –

+1

我在这里实现了这个https://gist.github.com/908048 –