【问题标题】:Calling SOAP webservice using java使用 java 调用 SOAP Web 服务
【发布时间】:2015-04-29 04:03:29
【问题描述】:

我正在使用下面的代码来调用基于肥皂的网络服务。调用时,我需要从客户端检查调用是否成功。无需等待网络服务的响应。

是否有任何响应代码或以任何方式,客户端会知道调用成功并且传递的有效负载是正确的。

         url = new URL(webserviceURL);
        URLConnection connection = url.openConnection();
        HttpURLConnection httpConn = (HttpURLConnection) connection;
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
        String xmlInput =
            " <soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" +
            "   <soapenv:Body>\n" + bodyContent + "   </soapenv:Body>\n" + "</soapenv:Envelope>";
        byte[] buffer = new byte[xmlInput.length()];
        buffer = xmlInput.getBytes();
        bout.write(buffer);
        byte[] b = bout.toByteArray();
        httpConn.setRequestProperty("Content-Length", String.valueOf(b.length));
        httpConn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
        httpConn.setRequestMethod("POST");
        httpConn.setDoOutput(true);
        httpConn.setDoInput(true);
        OutputStream out = httpConn.getOutputStream();
        out.write(b);
        out.close();

问候, 斯大林

【问题讨论】:

  • 如果你使用SOAP库并自己获取WSDL文档会容易得多
  • 我的代码本质上应该是通用的,而不是绑定到任何特定的 wsdl。我应该能够调用任何肥皂服务。它只需要 webservice url 和 payload 作为输入。
  • 是的,我明白你想要做什么。 HttpURLConnection 确实是一个不错的选择,但是肥皂服务的工作方式是您需要提及 SOAP_ACTION、SOAP_METHOD、SOAP_NAMESPACE。 SOAP_URL,所以它是最好和最容易选择的,你现在有 SOAP 库
  • 我希望,你建议我使用 javax.xml.soap.SOAPConnection.call(SOAPMessage request, Object to) throws SOAPException ??

标签: java web-services http soap


【解决方案1】:
            SoapObject send = new SoapObject("Your NAMESPACE"," Your METHODS");

// 现在添加尽可能多的参数,以将其发送到 Web 服务方法,如果没有,则不添加

send.addProperty("intId", 0);



            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
            envelope.setOutputSoapObject(send);

            envelope.dotNet = true;

            HttpTransportSE androidHttpTransport = new HttpTransportSE("Your SOAP_ADDRESS");
            androidHttpTransport.call("Your SOAP_ACTION", envelope);

            SoapObject result = (SoapObject) envelope.getResponse();
            String s = result.toString();

确保您确实将 ksop2 库添加到您的项目中以使用它,

您可以从刚刚提供给您的 WSDL 文档中收集有关 SOAP_ADDRESSNAMESPACEMETHODSSOAP_ADDRESS 的信息在浏览器中运行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    相关资源
    最近更新 更多