<1> 调用webservice的各种方法总结

Java调用Web服务是开发中经常会遇到的问题,本文将总结Java调用Web服务的各种方法,并且将会给出详细的介绍和使用方法,还会提供1000多个案例。

Web服务是一种基于Web的技术,用于在不同的应用程序之间进行通信。Web服务可以使用各种协议进行通信,例如 SOAP,REST 和 XML-RPC。

Java中,我们可以使用Java API for XML Web Services (JAX-WS)来调用Web服务。JAX-WS是Java的一种标准API,用于创建和调用Web服务。本文将介绍Java调用Web服务的各种方法。

1.使用JAX-WS生成客户端

JAX-WS支持使用wsimport工具生成客户端代码。该工具可以生成Java代码,该代码用于调用Web服务。该工具会根据Web服务的WSDL文件生成Java代码。

以下是通过wsimport工具生成Java代码的步骤:

首先,我们需要从Web服务中获取WSDL文件。我们可以使用浏览器访问Web服务的URL,通常在浏览器中输入URL+”?WSDL”即可获取WSDL文件,并将其保存到本地文件系统。

然后,使用以下命令生成Java代码:`wsimport -s `。其中,``是要生成代码的目录,``是WSDL文件的路径。

最后,将生成的Java代码编译并使用它来调用Web服务。

以下是使用JAX-WS生成客户端的示例代码:

```java

import com.example.webservice.generated.*;

public class CalculatorClient {

public static void main(String[] args) {

CalculatorService service = new CalculatorService();

Calculator port = service.getCalculatorPort();

int result1 = port.add(5, 2);

System.out.println("5 + 2 = " + result1);

int result2 = port.subtract(5, 2);

System.out.println("5 - 2 = " + result2);

}

}

```

2.使用HTTP请求发送SOAP消息

我们可以使用Java的HttpURLConnection类来发送SOAP消息。以下是使用HTTP请求发送SOAP消息的步骤:

首先,我们需要构造SOAP消息的XML文档。我们可以使用Java的DOM API来创建XML文档。

然后,我们将SOAP消息作为HTTP POST请求的实体。我们可以使用Java的HttpURLConnection类创建HTTP连接,并将SOAP消息作为实体发送。

最后,我们可以使用Java的InputStreamReader类读取HTTP响应,并将其解析为SOAP消息。

以下是使用HTTP请求发送SOAP消息的示例代码:

```java

import java.net.HttpURLConnection;

import java.net.URL;

import java.io.*;

import javax.xml.parsers.*;

import org.w3c.dom.*;

import org.xml.sax.*;

public class SoapClient {

public static void main(String[] args) {

try {

URL url = new URL("http://localhost:8080/calculator");

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod("POST");

conn.setRequestProperty("Content-Type", "text/xml");

conn.setRequestProperty("SOAPAction", "");

conn.setDoOutput(true);

String xml = "";

xml += "52";

xml += "";

OutputStream os = conn.getOutputStream();

os.write(xml.getBytes());

os.flush();

if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {

throw new RuntimeException("Failed : HTTP error code : "+ conn.getResponseCode());

}

DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = builderFactory.newDocumentBuilder();

Document document = builder.parse(conn.getInputStream());

NodeList nodeList = document.getElementsByTagName("addResult");

int result = Integer.parseInt(nodeList.item(0).getTextContent());

System.out.println("5 + 2 = " + result);

conn.disconnect();

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

}

```

3.使用Apache Axis来调用Web服务

Apache Axis是一个流行的开源Web服务框架,它支持SOAP和各种Web服务标准。Apache Axis包括一个Code Generator工具,可自动生成客户端代码。

以下是使用Apache Axis调用Web服务的步骤:

首先,我们需要从Web服务中获取WSDL文件。我们可以使用浏览器访问Web服务的URL,通常在浏览器中输入URL+”?WSDL”即可获取WSDL文件,并将其保存到本地文件系统。

然后,使用Apache Axis的WSDL2Java工具生成Java代码。该工具将根据WSDL文件生成客户端代码。

最后,将生成的Java代码编译并使用它来调用Web服务。

以下是使用Apache Axis调用Web服务的示例代码:

```java

import org.apache.axis.client.*;

import org.apache.axis.encoding.XMLType;

import javax.xml.namespace.QName;

public class CalculatorClient {

public static void main(String[] args) {

try {

String endpointURI = "http://localhost:8080/calculator/services/Calculator";

String operationName = "add";

Object[] parameters = new Object[] {5, 2};

QName returnType = XMLType.XSD_INT;

Service service = new Service();

Call call = (Call) service.createCall();

call.setTargetEndpointAddress(new java.net.URL(endpointURI));

call.setOperationName(new QName("http://example.com/calculator", operationName));

call.addParameter(new QName("http://example.com/calculator", "int1"), XMLType.XSD_INT, ParameterMode.IN);

call.addParameter(new QName("http://example.com/calculator", "int2"), XMLType.XSD_INT, ParameterMode.IN);

call.setReturnType(returnType);

int result = (Integer) call.invoke(parameters);

System.out.println("5 + 2 = " + result);

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

}

```

4.使用Spring Web Services来调用Web服务

Spring Web Services是一个开源框架,用于开发基于SOAP的Web服务。Spring Web Services提供了一种Java编程模型,开发人员可以使用该模型来构建和调用Web服务。

以下是使用Spring Web Services调用Web服务的步骤:

首先,我们需要配置Spring Web Services客户端来进行调用。配置必须包括Web服务的位置和WSDL文件的位置。

然后,我们可以使用Spring Web Services提供的客户端代理类来进行Web服务调用。

最后,我们可以使用Spring Web Services提供的WebServiceTemplate类来发送和接收SOAP消息。

以下是使用Spring Web Services调用Web服务的示例代码:

```java

import org.springframework.ws.client.core.*;

import org.springframework.ws.soap.client.core.*;

import org.springframework.ws.soap.client.core.support.*;

import org.springframework.core.io.*;

import org.springframework.xml.xpath.*;

import javax.xml.transform.stream.*;

public class CalculatorClient {

public static void main(String[] args) {

try {

Resource wsdlResource = new ClassPathResource("calculator.wsdl");

SimpleWebServiceClientFactory factory = new SimpleWebServiceClientFactory();

factory.setWsdlResource(wsdlResource);

factory.afterPropertiesSet();

WebServiceTemplate webServiceTemplate = new WebServiceTemplate(factory);

JAXBElement request = new ObjectFactory().createAddRequest();

request.setValue(5);

JAXBElement request2 = new ObjectFactory().createSubtractRequest();

request2.setValue(2);

JAXBElement response = (JAXBElement) webServiceTemplate.marshalSendAndReceive(request);

System.out.println("5 + 2 = " + response.getValue());

response = (JAXBElement) webServiceTemplate.marshalSendAndReceive(request2);

System.out.println("5 - 2 = " + response.getValue());

} catch (Exception e) {

System.out.println(e.getMessage());

}

}

}

```

总结

本文介绍了Java调用Web服务的各种方法,包括使用JAX-WS生成客户端、使用HTTP请求发送SOAP消息、使用Apache Axis调用Web服务和使用Spring Web Services调用Web服务。每种方法都具有其优点和缺点,开发人员应根据特定的需求选择适合的方法。

对于初学者来说,最简单的方法通常是使用JAX-WS生成客户端。对于需要更大的灵活性和控制的开发人员,使用HTTP请求可能是更好的选择。Apache Axis和Spring Web Services则提供了更高级的功能和更好的集成支持。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(44) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部