用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 最后,将生成的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 += " 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.setValue(5); JAXBElement request2.setValue(2); JAXBElement System.out.println("5 + 2 = " + response.getValue()); response = (JAXBElement 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内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。 我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!
发表评论 取消回复