如何在android中发布SOAP服务请求?

时间:2012-10-17 03:45:10

标签: java android soap

  

可能重复:
  Android, sending XML via HTTP POST (SOAP)

如何在android中发布SOAP服务请求?

请举个例子

感谢您与我分享知识

1 个答案:

答案 0 :(得分:0)

使用KSoap library,这是我项目的代码段:

SoapObject soapObject = new SoapObject(NAMESPACE_NIST_IMPORT,
                METHOD_NAME_NIST_IMPORT);

        ImportNistFileReq nistReq = new ImportNistFileReq(nistFile);

        PropertyInfo pi = new PropertyInfo();
        pi.setName("req");
        pi.setValue(nistReq);
        pi.setType(nistReq.getClass());
        soapObject.addProperty(pi);


        SoapSerializationEnvelope soapSerializationEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

        new MarshalBase64().register(soapSerializationEnvelope);

        soapSerializationEnvelope.setOutputSoapObject(soapObject);

        soapSerializationEnvelope.addMapping(NAMESPACE_NIST_IMPORT, "ImportNistFileReq", new ImportNistFileReq().getClass());


        soapSerializationEnvelope.dotNet = true;
        Object objectResult = null;

        try {
            HttpTransportSE httpTransportSE = new HttpTransportSE(
                    URL_NIST_IMPORT);

            httpTransportSE.debug = true;
            httpTransportSE.call(SOAP_ACTION_NIST_IMPORT, soapSerializationEnvelope);

            String host = httpTransportSE.getPath();
            Log.i("HOST: ", host);

            objectResult = (Object) soapSerializationEnvelope.getResponse();


        } catch (IOException e) {
            Log.e("IO: ", e.getMessage());
        } catch (XmlPullParserException e) {
            Log.e("XML: ", e.getMessage());
        }

这段代码向网络服务发送一个NIST File,表示为byte array,编码为Byte64。像这样的请求应该在像AsyncTask ..

这样的分离线程中调用

常数:

  • NAMEPSPACE_NIST_IMPORT
  • METHOD_NAME_NIST_IMPORT
  • URL_NIST_IMPORT
  • SOAP_ACTION_NIST_IMPORT

指我的.NET服务提供的wsdl文件。这是一个很棒的教程one。如果有什么不清楚,请问。祝好运。

相关问题