0

下面代码中显示的链接上有一个名为“HelloWorld”的 api。如何使用下面的代码调用此 api。该 api 不接受任何参数。

该服务已存在于显示的 url 上。我需要在下面的代码中添加什么:

import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;

public class apiHelloWorld {

    public static void main(String[] args) throws Exception {
        URL url = new URL("http://project.url.com/service.asmx?wsdl");

    }
}
4

1 回答 1

0

您的 URL 表明您指向的是文档,而不是实际的服务。很可能您的服务位于相同的 URL 下,但没有足够的 URL ?wsdl)。

也就是说,使用普通URL类调用 SOAP Web 服务需要一些额外的步骤。但这绝对是可能的,毕竟这是一个普通的 HTTP 协议。

您需要 XML 格式的 SOAP 请求,包括 SOAP Envelope。这可能是最复杂的部分(示例来自:Sending a SOAP request to a Web Service via URLConnection):

String soapXml =   //...;
java.net.URLConnection conn = new URL("http://project.url.com/service.asmx").openConnection();
conn.setRequestProperty("SOAPAction", "");
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(soapXml);
wr.flush();

BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));

通过阅读rd,您可以获取响应。

于 2013-01-17T17:53:58.820 回答