欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

http调用webService接口

程序员文章站 2022-06-19 11:41:55
/**@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...

* 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("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
        .append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">")
                .append("<soap:Body>")
                .append("<getWeatherbyCityName xmlns=\"http://WebXml.com.cn/\">")
                .append("<theCityName>")
                .append("苏州")
                .append("</theCityName>")
                .append("</getWeatherbyCityName>")
                .append("</soap:Body>")
                .append("</soap:Envelope>");
        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
<?xml version="1.0" encoding="utf-8"?><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>58357</string><string>58357.jpg</string><string>2020/12/2 14:48:04</string><string>6℃/13℃</string><string>12月2日 阴</string><string>北风3-4级</string><string>2.gif</string><string>2.gif</string><string>今日天气实况:气温:11℃;风向/风力:北风 2级;湿度:75%;紫外线强度:最弱。</string><string>中国人民保险中暑指数:无中暑风险,天气舒适,对易中暑人群来说非常友善。
健臻·血糖指数:不易波动,天气条件好,血糖不易波动,可适时进行户外锻炼。
穿衣指数:较冷,建议着厚外套加毛衣等服装。
洗车指数:较不宜,风力较大,洗车后会蒙上灰尘。
紫外线指数:最弱,辐射弱,涂擦SPF8-12防晒护肤品。
</string><string>3℃/12℃</string><string>12月3日 多云</string><string>北风4-5级</string><string>1.gif</string><string>1.gif</string><string>3℃/10℃</string><string>12月4日 晴</string><string>北风3-4级</string><string>0.gif</string><string>0.gif</string><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

本文地址:https://blog.csdn.net/xiaowang199303/article/details/110481496

相关标签: WSDL