一、过程中踩的坑
1、传统的webservice调用方式会报错,none policy等
sap提供的wsdl不是普通的以?wsdl结尾的链接,而是一个结构类似于下面这个链接的格式http://*******.com:8001/sap/bc/srt/wsdl/flv_10002A111AD1/bndg_url/sap/bc/srt/rfc/sap/yws_get_str/200/yws_get_str/yws_get_str?sap-client=200(网上随便找的)
2、使用java自带的编译器可以很简单帮你生成该wsdl文档下的java框架。原理很简单,wsdl包括了接口文档信息,只要把wsdl的文件给wsimport就可以生成java文件
a、在java安装环境下找到jdk的bin目录下有一个wsimport.exe的工具,
b、使用该工具可以根据wsdl地址生成java的客户端代码。在CMD中键入命令如下:
wsimport -d E:\data\soap -keep -verbose -Xauthfile E:\data\soap\11.txt http://XXXXXXX
命令参数说明:
-d: 生成客户端执行类的class文件的存放目录
-s: 生成客户端执行类的源文件的存放目录
-p: 定义生成类的包名
- http://XXXXXXX:为sap生成WSDL的URL
其中11.txt里填写wsdl地址:http://账号:密码@XXXXXXX
(在java环境下创建了一个名为TestClient的java project,找到TestClient磁盘路径,在src下新建11.txt文件)
CMD我键入的命令为:wsimport -d D:\eclipse-workspace\Testclient\src -keep -verbose -Xauthfile D:\eclipse-workspace\Testclient\src\11.txt http://xxxxxxx
参考原文链接:https://blog.csdn.net/willieyuan/article/details/103995609
这种方法确实生成了几个可用文件,但无法成功调用
二、成功调用
ClosableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url)
//xml为访问时的参数,但是要传xml格式
httpPost.setEntity(new StringEntity("xml"))
ClosableHttpResponse response = httpClient.excute(httpPost)
HttpEntity entity=response.getEntity();