第三方接口怎么写

如何对第三方接口发送url请求

好的,今天我们来写一个,向第三方接口发送url请求。
想必我们平时也经常会遇到向第三方接口发送请求,有时有个对方提供的jar包方法方便些,填参数就行,但偶尔遇到某些参数写在了jar包里无法修改,而我们又必须要修改的时候就需要自己发送url请求过去。
或者活得苦一点,第三方干脆就给了个url链接跟要填的参数/(ㄒoㄒ)/~~
或者更过分一点,遇到老项目,传的还是xml格式
那看看我的方法,按需替换,增加一下字段就可以使用了

//方法名随便取一个
public String 方法名(String serviceId){
		//这个就是url地址,防止被人攻击,随便写一个,自己替换一下
		String addFirst = "http://11.1.11.111:1111/xxxxxx/xxxxxx?xxxxxx=&xxxxxx=&xxxxxx=xxxx";
        HttpURLConnection con = null;
        //要传过去的xml,别照抄啊,写你要的xml,菜鸟里有xml格式验证附上链接https://www.runoob.com/xml/xml-validator.html,不知道怎么写问第三方要传的内容,组一组就行了,要用json的换成json的数据就行了,防止泄露,我删点xml内容,没验证,可能格式错误了,自己替换一下
        String requestBodyFirst = "<soapenv:Envelope xmlns:soapenv=\"http://xxxxxxxxxx\">" +
                "   <soapenv:Header/>" +
                "   <soapenv:Body>" +
                "      <urn:MT_ZHLH_DZJ_ECC_ORDER_DETAIL_REQ>" +
                //要填进去内容可以像下面这样写
                "      <IV_NUMBER>"+serviceId+"</IV_NUMBER></urn:MT_ZHLH_DZJ_ECC_ORDER_DETAIL_REQ>" +
                "   </soapenv:Body>" +
                "</soapenv:Envelope>";
        HttpURLConnection con = null;
        try {
        	//下面可以照抄
        	// 指定WebService服务的请求地址:
			// 创建URL:
            URL url = new URL(addFirst);
            // 建立连接,并将连接强转为Http连接
            URLConnection conn = url.openConnection();
            con = (HttpURLConnection) conn;
            // 设置请求方式和请求头:
            con.setDoInput(true); // 是否有入参
            con.setDoOutput(true); // 是否有出参
            con.setRequestMethod("POST"); // 设置请求方式
            con.setRequestProperty("content-type", "text/xml;charset=UTF-8");
            //通过流的方式将请求体发送出去
            OutputStream out = con.getOutputStream();
            out.write(xml.getBytes());
            out.close();
            int code = con.getResponseCode();
            //服务端返回正常
            if (code == 200) {
                InputStream is = con.getInputStream();
                byte[] b = new byte[1024];
                StringBuffer sb = new StringBuffer();
                int len = 0;
                while ((len = is.read(b)) != -1) {
                    String str = new String(b, 0, len, "UTF-8");
                    sb.append(str);
                }
                //回参xml转string
                String xmlReturn = sb.toString();
                is.close();
                //好了,抄到这,下面根据不同三方接口的回参,因为我是xml回参,我就截取文字,我这先截取了一个大的数据,然后再获取里面的type
                String type = xmlReturn.substring(xmlReturn.indexOf("<xml>") + 11, xmlReturn.indexOf("</xml>"));
                type = type.substring(type.indexOf("<type>") + 6, type.indexOf("</type>"));
                is.close();
                //我这type=S代表成功查出来数据了
                if (type.equals("S")) {
                	//截取body里所有数据回传到别的接口
                    re = xmlReturn.substring(xmlReturn.indexOf("<xmlbody>") + 11, xmlReturn.indexOf("</xmlbody>"));
                    return re;
                } else {
                    return re = "false";
                }
            } else {
                return re = "false";
            }
        }catch (Exception e) {
// TODO: handle exception
            e.printStackTrace();
        } finally {
            if (con != null) {
                con.disconnect();
            }
        }
        return re;
    }

好了,这个时候我们获得了回参里的所有主要数据,是不是还想知道知道怎么拿出里面的数据,我知道你懒得思考,上面方法里的截取字段可以直接用,比如你要获取回参xml里的ACCCC字段,用这句话

String ACCCC= re.substring(re.indexOf("<ACCCC>") + 7, re.indexOf("</ACCCC>"));

这个时候获取出来的ACCCC就是要的数据
ok今天的讲解结束了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值