Java以webservice方式调用SAP接口传输数据

合集下载

Java以webservice方式调用SAP接口传输数据

Java以webservice方式调用SAP接口传输数据

Java以webservice方式调用SAP接口传输数据,在SAP中生成会计凭证/冲销会计凭证1.生成会计凭证(已完成)2.冲销会计凭证(以下教程截图以该接口为例)Java调用sap的webservie接口,即SAP作为webservice的服务端,java程序作为调用webservice服务的客户端。

1.获取SAP的webservice服务端接口的描述文件-WSDL文件;2.在apache的axis项目官方网站上下载axis代码工具包3.通过axis代码工具包和拿到的接口的WSDL文件,生成java的webservice客户端代码新建windows的批处理文件,内容如下set Axis_Lib=D:\axis-1_4\libset Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%set Output_Path=D:\axis-1_4\server%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% D:\axis-1_4\BC_FIDocCreate_Sender_SI_FIDocRev_OB.wsdl@pause将该批处理文件存储,然后在命令行窗口运行在D:\axis-1_4下生成了server目录,里面就是生成的客户端代码4.在MyEclipse中新建java web工程(??此处不是很确定,应该java工程也可以,在javaweb工程中也是直接通过main函数run的),将生成的webservice客户端代码导入,注意修改对应的HTTP和HTTPS地址,调用客户端请求数据参考附件打包的java工程代码Build Path设置,lib目录里面有很多jar包,实际该工程用到的没几个,如下图5.参看文档地址/bp-ab0a8b2dcfc789eb172dc814-1.html6.异常解决确保到目标地址的物理网络和对应端口没有被网管或防火墙屏蔽,如果请求webservice的服务器端有问题,可以根据java中抛出的异常信息跟踪和修改Webservice的调用本质上是一个http请求和响应的过程,可以在java代码中设置代理,然后使用http代理服务器软件记录http请求的请求头数据和返回的数据,跟踪异常情况,http代理服务器软件推荐burpsuit(黑客级工具,很好很强大,可以到网上搜破解版,如何设置和使用,请百度),通过代理服务器得到的http请求的请求头数据和返回的数据如下图附件java工程源代码下载地址链接: /s/1sjJnQMD密码: 6q3d作者联系方式:newker@ 百度空间: /newker1989。

java webservice几种调用方式

java webservice几种调用方式

java webservice几种调用方式Java Web Service是一种流行的技术,用于通过网络在不同系统之间实现通讯和集成。

在Java中,有多种方式可以调用Web Service。

下面将介绍几种常用的调用方式。

1.使用SOAP(Simple Object Access Protocol)协议SOAP是一种基于XML的通讯协议,可以在网络上使用HTTP、SMTP等协议发送和接收消息。

在Java中,可以使用SOAP协议调用Web Service。

SOAP使用WSDL(Web Services Description Language)来描述Web Service的接口和功能。

可以使用轻量级的SOAP框架Apache CXF或Metro来创建和调用SOAP Web Service。

调用方式主要包括以下几步:-创建一个Java类来表示Web Service的接口,并使用注解来定义接口的操作。

-使用工具,如Apache CXF或Metro,将该类生成WSDL文档。

-使用WSDL文档生成客户端代码,以便在调用Web Service时使用。

-创建一个客户端程序,通过调用生成的客户端代码来调用Web Service的方法。

2.使用JAX-WS(Java API for XML Web Services)标准JAX-WS是一种Java的Web Service规范,它提供了一种简单的方式来创建和调用Web Service。

JAX-WS提供了注解,用于将Java类转换为Web Service,并且可以使用Java的代理类来调用Web Service 的方法。

调用方式包括以下几步:-创建一个Java类,并用@WebService注解来标记它作为一个Web Service的实现。

-在该类中定义Web Service的操作,并使用@WebMethod注解来标记这些方法。

-使用工具,如JDK的wsimport命令或Eclipse的WebService工具来生成客户端代码。

java webservice soap调用示例

java webservice soap调用示例

文章内容:一、简介在当今信息化社会,Web服务已成为各行各业重要的组成部分之一。

而SOAP(Simple Object Access Protocol)作为最早的一种Web 服务协议,至今仍被广泛使用。

本文将围绕着Java中如何使用SOAP 调用Web服务进行示例介绍。

二、了解SOAPSOAP是一种基于XML的协议,用于交换信息在计算机网络上。

它允许独立于评台和编程语言的应用之间进行通信。

在SOAP中,消息的格式以及如何处理消息的细节都严格定义,以确保消息在不同系统之间能够准确传递。

三、构建SOAP请求在Java中,我们可以使用JAX-WS(Java API for XML Web Services)来构建SOAP请求。

需要创建一个Java类来表示SOAP请求的消息体,然后使用该类的实例来构建SOAP消息。

使用JAX-WS 提供的工具类将消息发送给Web服务的端点。

四、示例演示假设我们需要调用一个提供天气信息的Web服务,我们首先需要定义一个Java类来表示SOAP请求的消息体,比如WeatherRequest。

使用JAX-WS提供的工具类来构建SOAP消息,并发送给Web服务端点。

解析并处理Web服务端点返回的SOAP响应消息,获取需要的天气信息,比如WeatherResponse。

五、总结回顾通过本文的示例演示,我们了解了在Java中如何使用SOAP调用Web服务的全过程。

从构建SOAP请求,到发送并处理响应消息,我们对整个过程有了深入的了解。

我们也学习了如何使用JAX-WS和相关工具类来简化SOAP调用的过程。

六、个人观点和理解作为一种基于XML的协议,SOAP虽然有些过时,但在一些特定的场景仍然具有重要的意义。

在开发过程中,我们需要根据实际情况灵活选择合适的Web服务协议,同时也需要深入了解各种协议的特点和使用方式,以便在实际项目中能够做出正确的技术选择。

以上就是关于Java中使用SOAP调用Web服务的示例介绍。

Java发送SOAP请求调用WebService,解析SOAP报文

Java发送SOAP请求调用WebService,解析SOAP报文

Java发送SOAP请求调⽤WebService,解析SOAP报⽂https:///Peng_Hong_fu/article/details/80113196记录测试代码SoapUI调⽤路径http://localhost:8082/*/webservices/**Service?wsdlimport ng.StringUtils;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.xpath.DefaultXPath;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import .HttpURLConnection;import .URL;import java.util.Base64;import java.util.Collections;import java.util.List;/*** 模拟soapUI调⽤WebService,解析返回报⽂* Created by PengHongfu 2018-04-26 15:36*/public class TestSoap {//测试环境地址public static String INVOICE_WS_URL = "http://localhost:8082/*/webservices/**Service";public static void main(String[] args) throws Exception {String sid = "SID值";String content = "报⽂内容,jOSN格式";String tranSeq = "UUID";String tranReqDate = "2018-04-24";StringBuffer stringBuffer = testWebService(sid, content, tranSeq, tranReqDate);// 打印HTTP响应数据System.out.println(stringBuffer);//处理返回数据String xmlResult = stringBuffer.toString().replace("<", "<");String rtnCode = getXmlMessageByName(xmlResult, "rtnCode");//报⽂返回状态码,0表⽰正常,3表⽰错误String message = getXmlMessageByName(xmlResult, "message");//返回信息,主要是状态码不正常时抛出String body = getXmlMessageByName(xmlResult, "body");//返回正⽂数据,需要base64解密if ("0".equals(rtnCode)) {//查询成功if (StringUtils.isNotBlank(body)) {//解密base64加密数据Base64.Decoder decoder = Base64.getDecoder();byte[] encodedText = body.getBytes();String decrypt = new String(decoder.decode(encodedText), "UTF-8");System.out.println(decrypt);}} else {//查询失败}}// 调⽤WSprivate static StringBuffer testWebService(String sid, String content, String tranSeq, String tranReqDate) throws Exception {//拼接请求报⽂String sendMsg = appendXmlContext(sid, content, tranSeq, tranReqDate);// 开启HTTP连接InputStreamReader isr = null;BufferedReader inReader = null;StringBuffer result = null;OutputStream outObject = null;try {URL url = new URL(INVOICE_WS_URL);HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();// 设置HTTP请求相关信息httpConn.setRequestProperty("Content-Length",String.valueOf(sendMsg.getBytes().length));httpConn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");httpConn.setRequestMethod("POST");httpConn.setDoOutput(true);httpConn.setDoInput(true);// 进⾏HTTP请求outObject = httpConn.getOutputStream();outObject.write(sendMsg.getBytes());if (200 != (httpConn.getResponseCode())) {throw new Exception("HTTP Request is not success, Response code is " + httpConn.getResponseCode());}// 获取HTTP响应数据isr = new InputStreamReader(httpConn.getInputStream(), "utf-8");inReader = new BufferedReader(isr);result = new StringBuffer();String inputLine;while ((inputLine = inReader.readLine()) != null) {result.append(inputLine);}return result;} catch (IOException e) {throw e;} finally {// 关闭输⼊流if (inReader != null) {inReader.close();}if (isr != null) {isr.close();}// 关闭输出流if (outObject != null) {outObject.close();}}}//拼接请求报⽂private static String appendXmlContext(String sid, String content, String tranSeq, String tranReqDate) {// 构建请求报⽂StringBuffer stringBuffer = new StringBuffer("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +"<soapenv:Envelope xmlns:soapenv=\"/soap/envelope/\" xmlns:com=\"http://com.foresee.top.service/\">\n" +" <soapenv:Body>\n" +" <ns1:doService xmlns:ns1=\".chinatax.gt3nf.nfzcpt.service/\">\n" +" <reqXml><![CDATA[<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +"<tiripPackage xmlns:xsi=\"/2001/XMLSchema\" version=\"1.0\" xsi:type=\"tiripPackage\">\n" +" <sessionId/>\n" +" <service>\n" +" <sid>" + sid + "</sid>\n" +" <version>1.0</version>\n" +" <tranSeq>+" + tranSeq + "</tranSeq>\n" +" <tranReqDate>" + tranReqDate + "</tranReqDate>\n" +" </service>\n" +" <bizContent>\n" +" <content>" + content + "</content>\n" +" <paramList>\n" +" <param>\n" +" <name>docType</name>\n" +" <value>json</value>\n" +" </param>\n" +" <param>\n" +" <name>className</name>\n" +" <value>GGG</value>\n" +" </param>\n" +" </paramList>\n" +" </bizContent>\n" +"</tiripPackage>\n" +"]]></reqXml>\n" +" </ns1:doService>\n" +" </soapenv:Body>\n" +"</soapenv:Envelope>");return stringBuffer.toString();}//解析报⽂,根据末节点名称获取值private static String getXmlMessageByName(String xmlResult, String nodeName) throws DocumentException {Document doc = DocumentHelper.parseText(xmlResult);DefaultXPath xPath = new DefaultXPath("//" + nodeName);xPath.setNamespaceURIs(Collections.singletonMap("ns1", ".chinatax.gt3nf.nfzcpt.service/"));List list = xPath.selectNodes(doc);if (!list.isEmpty() && list.size() > 0) {Element node = (Element) list.get(0);return node.getText();}return "";}}针对下⾯的报⽂格式,取节点值:<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="/soap/envelope/"><soap:Body><ns1:doServiceResponse xmlns:ns1=".chinatax.gt3nf.nfzcpt.service/"><return><![CDATA[<taxML><service><sid>SID值</sid><channelType>10</channelType><version>1.0</version><tranSeq>UUID</tranSeq><tranReqDate>20171204</tranReqDate></service><bizContent><bizResult><head><rtnCode>0</ </ns1:doServiceResponse></soap:Body></soap:Envelope>。

java web service接口的调用方法

java web service接口的调用方法

Java Web Service 接口的调用方法一、配置 axis在 Java 项目中配置 Web Service 服务的第一步是使用 axis 来配置服务器。

axis 是 Web Service 服务器的驱动程序,它负责将Web Service 发布到网络上,并提供调用 Web Service 接口的服务。

在 axis 中配置服务器很简单,只需要在服务器配置文件中添加如下内容:```axis2.xml:``````<axis2><transports><transport name="http" /></transports><services><service name="MyService"><endpoint name="httpEndpoint"address="http://localhost:8080/axis2/services/MyService" /> </service></services></axis2>```上述配置中,需要将“http”改为实际的 Web Service 接口地址,例如“http://localhost:8080/axis2/services/MyService”。

此外,需要将“httpEndpoint”设置为 Web Service 接口的实际地址。

二、在项目中配置 axis在配置 axis 之后,需要在 Java 项目中使用 axis 来加载 Web Service 接口。

在 Java 项目中配置 axis 的方法有多种,其中一种方法是使用 axis 的 servlet 来加载 Web Service 接口。

1.创建 web 项目 testWebService,将 axis 那个源文件中/axis-src-14/axis-14/lib 下的几个主要的包 (就是第一步中那个配置中提到的那个几个包),拷贝到这个项目的webRoot/WEB-INF/lib 下。

java webservice 接口实现方式

java webservice 接口实现方式

Java WebService 接口实现方式什么是 WebServiceWebService 是一种基于 Web 的服务通信协议,通过使用标准的 HTTP 协议传输数据,使得不同平台、不同语言的应用程序能够进行互操作。

它使用 XML 格式来描述请求和响应的数据,并使用 SOAP(简单对象访问协议)来封装和传输这些数据。

WebService 可以提供各种功能,例如数据查询、数据传输、远程过程调用等。

它是一种跨平台、跨语言的解决方案,能够实现不同系统之间的集成和通信。

Java WebService 实现方式Java 提供了多种方式来实现 WebService 接口,下面介绍两种常用的实现方式。

JAX-WSJAX-WS(Java API for XML Web Services)是 Java EE 的一部分,用于开发和部署 WebService。

它提供了一种简单的方式来创建和发布 WebService 接口。

创建接口首先,我们需要定义一个接口,用于描述我们要提供的服务。

接口中的每个方法都将成为可远程调用的操作。

import javax.jws.WebMethod;import javax.jws.WebService;@WebServicepublic interface MyWebService {@WebMethodString sayHello(String name);}在上面的例子中,我们定义了一个名为MyWebService的接口,其中有一个名为sayHello的方法,该方法接受一个字符串参数并返回一个字符串结果。

实现接口接下来,我们需要实现上述接口。

这里我们可以使用一个普通的 Java 类来实现接口中的方法。

@WebService(endpointInterface = "com.example.MyWebService")public class MyWebServiceImpl implements MyWebService {@Overridepublic String sayHello(String name) {return "Hello, " + name + "!";}}在上面的例子中,我们创建了一个名为MyWebServiceImpl的类,并实现了MyWebService接口中的sayHello方法。

java调用sap pi webservice实例

java调用sap pi webservice实例

要调用SAP PI的Web服务,您需要使用Java的Web服务客户端。

以下是一个简单的示例,演示如何使用Java调用SAP PI 的Web服务。

首先,您需要使用Java的`wsimport`工具从WSDL文件生成Java类。

假设您的WSDL文件名为`MyService.wsdl`,则可以使用以下命令生成Java类:```shellwsimport -keep MyService.wsdl```这将生成一个名为`MyService`的Java类,其中包含Web服务的所有端点。

接下来,您可以使用以下代码调用SAP PI的Web服务:```javaimport com.sap.aii. PI_Service_URL;import com.sap.aii.pi.ws.*;import com.sap.aii.pi.ws.soap.WS_HTTP_SOAP;public class SAP_PI_Client {public static void main(String[] args) throws Exception {WS_HTTP_SOAP wsHttpSoap = new WS_HTTP_SOAP();wsHttpSoap.setServiceURL(PI_Service_URL.getPIInstance(" your_pi_instance"));MyService myService = new MyService();MyPortType myPort = myService.getMyPort();String result = myPort.myMethod("param1", "param2"); System.out.println(result);}}```在此示例中,我们首先创建一个`WS_HTTP_SOAP`对象,并将其服务URL设置为SAP PI实例的URL。

java webservice几种调用方式

java webservice几种调用方式

Java WebService几种调用方式一、介绍Java WebService是一种基于SOAP协议的远程方法调用技术,可以实现跨评台、跨语言的通信。

在实际应用中,我们可以使用多种方式来调用Web服务,本文将介绍Java WebService几种常见的调用方式。

二、基于JAX-WS的调用方式JAX-WS(Java API for XML Web Services)是一种用于创建和调用Web服务的Java标准。

通过使用JAX-WS,我们可以方便地创建客户端和服务端,并进行方法调用。

在客户端,我们可以通过使用wsimport命令生成客户端的Java代码,并使用Java代码来调用Web服务的方法。

在服务端,我们可以通过使用@WebService注解来发布服务,并使用Java代码实现方法的具体逻辑。

三、基于Axis的调用方式Apache Axis是一个流行的开源Java Web服务框架,它支持SOAP协议,可以用于创建和调用Web服务。

在基于Axis的调用方式中,我们可以使用WSDL2Java工具生成客户端的Java代码,然后使用Java代码来调用Web服务的方法。

在服务端,我们可以使用Java代码实现方法的逻辑,并使用Axis框架来发布服务。

四、基于CXF的调用方式Apache CXF是另一个流行的开源Java Web服务框架,它也支持SOAP协议,并提供了丰富的特性和扩展性。

在基于CXF的调用方式中,我们可以使用wsdl2java工具生成客户端的Java代码,然后使用Java代码来调用Web服务的方法。

在服务端,我们可以使用Java代码实现方法的逻辑,并使用CXF框架来发布服务。

五、总结在本文中,我们介绍了Java WebService几种常见的调用方式,包括基于JAX-WS、Axis和CXF。

通过这些调用方式,我们可以方便地创建和调用Web服务,实现跨评台、跨语言的通信。

个人观点和理解作为Java开发人员,我认为Java WebService是一种非常重要的技术,它可以帮助我们实现分布式系统之间的通信,为企业级应用的开发提供了很大的便利。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java以webservice方式调用SAP接口传输数据,在SAP中生成
会计凭证/冲销会计凭证
1.生成会计凭证(已完成)
2.冲销会计凭证(以下教程截图以该接口为例)
Java调用sap的webservie接口,即SAP作为webservice的服务端,java程序作为调用webservice服务的客户端。

1.获取SAP的webservice服务端接口的描述文件-WSDL文件;
2.在apache的axis项目官方网站上下载axis代码工具包
3.通过axis代码工具包和拿到的接口的WSDL文件,生成java的webservice客户端代

新建windows的批处理文件,内容如下
set Axis_Lib=D:\axis-1_4\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=D:\axis-1_4\server
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% D:\axis-1_4\BC_FIDocCreate_Sender_SI_FIDocRev_OB.wsdl
@pause
将该批处理文件存储,然后在命令行窗口运行
在D:\axis-1_4下生成了server目录,里面就是生成的客户端代码
4.在MyEclipse中新建java web工程(??此处不是很确定,应该java工程也可以,在java
web工程中也是直接通过main函数run的),将生成的webservice客户端代码导入,注意修改对应的HTTP和HTTPS地址,调用客户端请求数据参考附件打包的java工程代码
Build Path设置,lib目录里面有很多jar包,实际该工程用到的没几个,如下图
5.参看文档地址
/bp-ab0a8b2dcfc789eb172dc814-1.html
6.异常解决
确保到目标地址的物理网络和对应端口没有被网管或防火墙屏蔽,如果请求webservice的服务器端有问题,可以根据java中抛出的异常信息跟踪和修改
Webservice的调用本质上是一个http请求和响应的过程,可以在java代码中设置代理,然后使用http代理服务器软件记录http请求的请求头数据和返回的数据,跟踪异常情况,http代理服务器软件推荐burpsuit(黑客级工具,很好很强大,可以到网上搜破解版,如何设置和使用,请百度),通过代理服务器得到的http请求的请求头数据和返回的数据如下图
附件java工程源代码下载地址
链接: /s/1sjJnQMD密码: 6q3d
作者联系方式:newker@ 百度空间: /newker1989。

相关文档
最新文档