我想连接到SOAP1.2Web服务,但据我所知,android不支持wshttpbindings。因此,我尝试了ksoap2库,它应该能够发送正确的soap操作。
SoapObject request = new SoapObject(NAMESPACE, SOAP_METHOD);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
envelope.implicitTypes = true;
envelope.dotNet = true;
envelope.headerOut = SoapUtils.buildHeader(SSL_URL, SOAP_ACTION);我甚至尝试编写头文件,但我只是不确定wshttpbinding真正需要哪些标签。有人知道如何在android下使用wshttpbinding吗?我已经看过其他问题了,但都不起作用。请帮帮忙。
发布于 2014-08-05 18:43:49
最好尝试使用basicHttpBinding。wsHttpBinding使用了一些高级消息安全(取决于您的设置),这在安卓系统中是不受支持的。传输安全(ssl)将变得更容易。
发布于 2014-08-06 18:53:40
我已经连接到wsdl服务。线索是服务需要一个返回SecurityContextToken的主请求。其他请求需要此令牌。第一个soap信封如下所示:

如果我将此soap信封发送到服务,它将返回可用于其他请求的SecurityToken。但我不确定哪些标签是SecurityTokenRequest真正需要的,因为在这个请求中有一些uids和标签值,它们每次都会改变,我不知道它们是如何构造的。例如MessageId、UserToken id、BinarySecret标签……
有人知道哪些标签是关键的,哪些不是吗?
我使用了HttpsUrlConnection和OutputStream:
URL url = new URL(SSL_URL);
HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
urlConnection.setDoOutput(true);
urlConnection.setSSLSocketFactory(context.getSocketFactory());
urlConnection.setHostnameVerifier(hostnameVerifier);
urlConnection.setRequestProperty("Content-Type", "application/soap+xml; charset=utf-8");
urlConnection.connect();
OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream());
if (out != null)
{
out.write(getReqData());
out.flush();
out.close();
}
int res = urlConnection.getResponseCode();
String message = urlConnection.getResponseMessage();
InputStream in = urlConnection.getInputStream();
String msg = convertStreamToString(in);https://stackoverflow.com/questions/25136180
复制相似问题