09_httpclietn测试SOAP协议

Posted HigginCui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了09_httpclietn测试SOAP协议相关的知识,希望对你有一定的参考价值。

【工程截图】注意:无需使用Wsimport生成客户端代码

 

【HttpClient.java】

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpClient {
    
    public static void main(String[] args) throws IOException {
        
        //开启 一个http链接
        //webservice地址
        URL url = new URL("http://127.0.0.1:12345/weather");
        
        HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
        
        //设置post请求,post是大写
        httpURLConnection.setRequestMethod("POST");
        //Content-Type: text/xml; charset=utf-8
        httpURLConnection.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
        
        //设置请求和响应
        httpURLConnection.setDoInput(true);
        httpURLConnection.setDoOutput(true);
        
        String requestString = requestString("郑州");
        //发送soap协议
        httpURLConnection.getOutputStream().write(requestString.getBytes());
        
        //接收响应内容
        
        InputStream inputStream = httpURLConnection.getInputStream();
        
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        
        int len=-1;
        byte[] b = new byte[1024];
        //将inputStream内容写到byteArrayOutputStream
        while((len= inputStream.read(b, 0, 1024))!=-1){
            byteArrayOutputStream.write(b, 0, len);
        }
        
        //获取响应内容 
        String responseString = byteArrayOutputStream.toString();
        
        System.out.println(responseString);
        
        //解析响应的xml数据。
        //....
        inputStream.close();
        byteArrayOutputStream.close();
    }
    
    /**
    <?xml version="1.0" ?>
        <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
            <S:Body>
                <ns2:queryWeather xmlns:ns2="http://server.weather.jaxws.Higgin.com/">
                    <arg0>郑州</arg0>
                </ns2:queryWeather>
            </S:Body>
    </S:Envelope>
     */
    //soap协议内容,请求的 内容
    private static String requestString(String cityName){
        String xmlString = "<?xml version=\\"1.0\\" ?>" +
                "<S:Envelope xmlns:S=\\"http://schemas.xmlsoap.org/soap/envelope/\\">" +
                "<S:Body>" +
                "<ns2:queryWeather xmlns:ns2=\\"http://server.weather.jaxws.Higgin.com/\\">" +
                "<arg0>"+cityName+"</arg0>" +
                        "</ns2:queryWeather>" +
                        "</S:Body>" +
                        "</S:Envelope>";
        return xmlString;
    }
}

 【运行结果】

(注意:要先开启WebService服务)

(需要进一步解析出自己所需的数据,使用正则表达式)

以上是关于09_httpclietn测试SOAP协议的主要内容,如果未能解决你的问题,请参考以下文章

08_使用TCP/IP Monitor监视SOAP协议

jmeter3 测试soap协议-webservice接口

java WebService接口采用SOAP协议的调用

python实现建立soap通信(调用及测试webservice接口)

JMeter4.0学习之SoapUI创建WebService接口模拟服务端以及JMeter测试SOAP协议性能测试脚本开发

使用loadrunner做性能测试时提示action.c(7):error:soap请求“soap