Java以SOAP方式调webservice实例

Java以soap调webservice

实现需要两点

一 导入jdk

二 导入commons-io

commons-io下载地址:https://download.csdn.net/download/liaryank/10508348

废话不多说直接上代码

import java.io.BufferedReader;  
import java.io.File;  
import java.io.FileReader;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.OutputStream;  
import java.net.HttpURLConnection;  
import java.net.URL;  

import org.apache.commons.io.IOUtils;  
public class testSoap {  
  
public static void main(String[] args) {  
try {  
soapSpecialConnection();  
} catch (Exception e) {e.printStackTrace();}}  
  
public static void soapSpecialConnection() throws Exception{  
String s = new String();
//读取本地XML方式
StringBuilder soapHeader = new StringBuilder();  
//soapUI自动生成的request xml路径,写入传入参数    E:\\Workspaces\MyEclipse 10\hello\src
File file = new File("E:\\Workspaces/MyEclipse 10/hello/src/soap.xml");  
BufferedReader reader = null;  
try {reader = new BufferedReader(new FileReader(file));  
String tempString = null;  
// 一次读入一行,直到读入null为文件结束  
while ((tempString = reader.readLine()) != null) {  
soapHeader.append(tempString);  
}  
reader.close();  
} catch (IOException e) {  
e.printStackTrace();  
} finally {  
if (reader != null) {  
try {  
reader.close();  
} catch (IOException e1) {}  
}  
}  
//soap拼接方式
StringBuffer sb = new StringBuffer();  
        String no = "10000000";
        sb.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:sap-com:document:sap:rfc:functions\">");  
        sb.append("<soapenv:Header/>");  
        sb.append("<soapenv:Body>");  
        sb.append("<urn:WWS_INFO_BY_RID>");  
        sb.append("<!--Optional:-->");
        sb.append("<I_KEYTDATE></I_KEYTDATE>");
        sb.append("<!--Optional:-->");
        sb.append("<I_PEDRNR>"+no+"</I_PEDRNR>");
        sb.append("<!--Optional:-->");
        sb.append("<I_UUNAME></I_UUNAME>");
        sb.append("</urn:WWS_INFO_BY_RID>");  
        sb.append("</soapenv:Body>");  
        sb.append("</soapenv:Envelope>");  
        //soapHeader = sb;
System.out.println("soapHeader="+soapHeader);  
//设置soap请求报文的相关属性  
//url从soapUI的request1的RAW标签的POST获取,url中不要有空格  
//非wsdl地址需要用soapUI解析才能用
String url="http://--------URL-------";
URL u = new URL(url);  
HttpURLConnection conn = (HttpURLConnection) u.openConnection();  
conn.setDoInput(true);  
conn.setDoOutput(true);  
conn.setUseCaches(false);  
conn.setDefaultUseCaches(false);  
//Host,Content-Type,SOAPAction从soapUI的request1的RAW标签的Host,Content-Typ,SOAPActione获取  
conn.setRequestProperty("Host", "IP(域名)+端口号");  
conn.setRequestProperty("Username", "用户名");
conn.setRequestProperty("Password", "密码");
conn.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");  
conn.setRequestProperty("Content-Length", String.valueOf(soapHeader.length()));  
conn.setRequestProperty("SOAPAction", "soapui中RAW标签中查看对应名称");  
conn.setRequestMethod("GET");  
//定义输出流  
OutputStream output = conn.getOutputStream();  
if (null != soapHeader) {  
byte[] b = soapHeader.toString().getBytes("utf-8");  
//发送soap请求报文  
output.write(b, 0, b.length);}  
output.flush();  
output.close();  
//定义输入流,获取soap响应报文  
InputStream input = conn.getInputStream();  
//需设置编码格式,否则会乱码  
s=IOUtils.toString(input, "UTF-8");  
input.close();  
System.out.println("输出的xml="+s);
}
}

猜你喜欢

转载自blog.csdn.net/Liaryank/article/details/80858278