http调用webService接口

* java http调用webService接口*

1.这里以天气接口为例

/**
 * @author :xiaowang
 * @description:TODO
 * @date :2020/12/2 14:03
 */
public class HttpWebServiceUtils {
     
    /*
     * http远程访问SOAP协议接口
     * @param url: 服务接口地址"http://192.168.0.120:8222/HelloWorld?wsdl"
     * @param isClass:接口类名
     * @param isMethod: 接口方法名
     * @param sendSoapString: soap协议xml格式访问接口
     * @return  soap协议xml格式
     * @备注:有四种请求头格式1、SOAP 1.1; 2、SOAP 1.2 ; 3、HTTP GET; 4、HTTP POST
     * 参考---》http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getWeatherbyCityName
     */
    public static String sendWebService(String url,String isClass,String isMethod,StringBuffer paramsXml,String token) throws Exception {
     
        //传过来的xml格式
        String xml = paramsXml.toString();
        if (xml==null){
     
            return "传入xml参数不能为空!";
        }
        URL sopul = new URL(url);
        //获取连接
        URLConnection connention = sopul.openConnection();
        //缓存设置
        connention.setUseCaches(false);
        //设置输入输出,新创建的connection默认是没有读写权限的
        connention.setDoInput(true);
        connention.setDoOutput(true);
        //设置请求头
        connention.setRequestProperty("Content-Length",xml.length()+"");
        //这里设置请求头类型为xml,传统http请求的是超文本传输格式text/html
        connention.setRequestProperty("Content-Type","text/xml; charset=utf-8");
        //调用的类名,方法名
        connention.setRequestProperty(isClass,isMethod);
        //这里如果携带token设置token,没传则不设置
        if (token!=null){
     
            connention.setRequestProperty("Authorization","Bearer "+token);
        }
        OutputStream os = connention.getOutputStream();
        OutputStreamWriter osw = new OutputStreamWriter(os,"utf-8");
        //写入传过来的xml文件格式
        osw.write(xml);
        //释放资源
        osw.flush();
        osw.close();
        //下面获取webservice返回过来的流
        InputStream is = connention.getInputStream();
        if (is!=null){
     
            byte[] bytes = new byte[0];
            bytes=new byte[is.available()];
            is.read(bytes);
            //将字节数组转换为字符串输出
            String outXml = new String(bytes,"UTF-8");
            return outXml;
        }
        return null;
    }

2.方法测试

    public static void main(String[] args) {
     
        String url="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";
        //构造xml参数
        StringBuffer sb = new StringBuffer();
        sb.append("")
        .append("")
                .append("")
                .append("")
                .append("")
                .append("苏州")
                .append("")
                .append("")
                .append("")
                .append("");
        try {
     
            String outXml = sendWebService(url, "getWeatherbyCityName", "theCityName", sb, "");
            System.out.println(outXml);
        } catch (Exception e) {
     
            e.printStackTrace();
        }
    }

3.返回结果

D:\develop\jdk1.8\bin\java.exe "-javaagent:D:\develop\IDEA2018\IntelliJ IDEA 2018.2.2\lib\idea_rt.jar=62386:D:\develop\IDEA2018\IntelliJ IDEA 2018.2.2\bin" -Dfile.encoding=UTF-8 -classpath D:\develop\jdk1.8\jre\lib\charsets.jar;D:\develop\jdk1.8\jre\lib\deploy.jar;D:\develop\jdk1.8\jre\lib\ext\access-bridge-64.jar;D:\develop\jdk1.8\jre\lib\ext\cldrdata.jar;D:\develop\jdk1.8\jre\lib\ext\dnsns.jar;D:\develop\jdk1.8\jre\lib\ext\jaccess.jar;D:\develop\jdk1.8\jre\lib\ext\jfxrt.jar;D:\develop\jdk1.8\jre\lib\ext\localedata.jar;D:\develop\jdk1.8\jre\lib\ext\nashorn.jar;D:\develop\jdk1.8\jre\lib\ext\sunec.jar;D:\develop\jdk1.8\jre\lib\ext\sunjce_provider.jar;D:\develop\jdk1.8\jre\lib\ext\sunmscapi.jar;D:\develop\jdk1.8\jre\lib\ext\sunpkcs11.jar;D:\develop\jdk1.8\jre\lib\ext\zipfs.jar;D:\develop\jdk1.8\jre\lib\javaws.jar;D:\develop\jdk1.8\jre\lib\jce.jar;D:\develop\jdk1.8\jre\lib\jfr.jar;D:\develop\jdk1.8\jre\lib\jfxswt.jar;D:\develop\jdk1.8\jre\lib\jsse.jar;D:\develop\jdk1.8\jre\lib\management-agent.jar;D:\develop\jdk1.8\jre\lib\plugin.jar;D:\develop\jdk1.8\jre\lib\resources.jar;D:\develop\jdk1.8\jre\lib\rt.jar;D:\Code\webservice\soup\out\production\soup com.jeeplus.util.HttpWebServiceUtils
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><getWeatherbyCityNameResponse xmlns="http://WebXml.com.cn/"><getWeatherbyCityNameResult><string>江苏string><string>苏州string><string>58357string><string>58357.jpgstring><string>2020/12/2 14:48:04string><string>6℃/13℃string><string>12月2日 阴string><string>北风3-4级string><string>2.gifstring><string>2.gifstring><string>今日天气实况:气温:11℃;风向/风力:北风 2级;湿度:75%;紫外线强度:最弱。string><string>中国人民保险中暑指数:无中暑风险,天气舒适,对易中暑人群来说非常友善。
健臻·血糖指数:不易波动,天气条件好,血糖不易波动,可适时进行户外锻炼。
穿衣指数:较冷,建议着厚外套加毛衣等服装。
洗车指数:较不宜,风力较大,洗车后会蒙上灰尘。
紫外线指数:最弱,辐射弱,涂擦SPF8-12防晒护肤品。
string><string>3℃/12℃string><string>12月3日 多云string><string>北风4-5级string><string>1.gifstring><string>1.gifstring><string>3℃/10℃string><string>12月4日 晴string><string>北风3-4级string><string>0.gifstring><string>0.gifstring><string>苏州位于长江下游,太湖之滨,鱼米之乡,面积8488平方公里。下辖张家港,常熟,太仓,昆山,吴县,吴江六县市,人口575万。其为亚热带季风气候,四季分明,全年平均气温15-17度,1月最低气温-9.4度,7、8月份最高气温达38.6度;全年平均降水量偏高,近1076.2毫米,无霜期在230天左右。苏州全市地势低平,平原占总面积的54%,平均海拔4米左右,东南部地势低洼,西南部多小山丘。吴县穹窿山主峰高351.7米,为全市最高点。境内河流纵横,湖泊众多,京杭运河贯通南北,望虞河、娄江、太浦河等连接东西,阳澄湖、昆承湖、淀山湖等散布其间,太湖水面90%左右在苏州市境内,全市水面占总面积的42.5%,是著名的江南水乡。苏州古城内现有河道35公里、桥梁168座,被誉为"东方威尼斯"。苏州园林甲天下,已被列入世界文化遗产名录,在中国四大名园中,苏州就占有两席(拙政园、留园)。“吴中第一名胜”虎丘,2500多年的历史形成的深厚的文化积淀,成为游客来苏州旅游的必游之地。而唐朝诗人张继的一首《枫桥夜泊》,使古今游客都要来枫桥,闻寒山寺的钟声。景观:苏州,拙政园,网师园,狮子林,留园,沧浪亭,怡园枫桥,寒山寺string>getWeatherbyCityNameResult>getWeatherbyCityNameResponse>soap:Body>soap:Envelope>

Process finished with exit code 0

你可能感兴趣的:(WSDL)