09_httpclient测试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服务)

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

原文地址:https://www.cnblogs.com/HigginCui/p/5840044.html