Android wshttpbinding支持

时间:2014-08-05 10:08:27

标签: android wcf soap wshttpbinding

我想连接到Soap 1.2 Web服务,但据我所知,android不支持wshttpbindings。所以我尝试了ksoap2 lib,它应该能够发送正确的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?我已经看过其他问题,但没有任何效果。请帮忙。

2 个答案:

答案 0 :(得分:0)

最好尝试使用basicHttpBinding。 wsHttpBinding使用Android中不支持的一些高级消息安全性(取决于您的设置)。运输安全(ssl)将更容易。

答案 1 :(得分:0)

我已连接到wsdl服务。线索是服务需要一个返回SecurityContextToken的主请求。额外请求需要此令牌。第一个肥皂信封看起来像这样:

SecurityTokenRequest

如果我将此soap信封发送到服务,它将返回可用于其他请求的SecurityToken。 但是我不确定哪些标签对于SecurityTokenRequest是必要的,因为在这个请求中有一些uid和标签值每次都会改变,我不知道它们是如何构建的。例如MessageId,UserToken id,BinarySecret Tag,......

有人知道哪些标签是重要的,哪些不是?

我使用了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);