java 调用第三方接口,post/get/delete方法,webservice 接口调用

这段代码展示了如何在Java中使用ApacheHttpClient库执行HTTP的POST、GET和DELETE请求。对于POST和DELETE,它包括了设置请求头、添加参数和处理响应。对于GET请求,它将参数附加到URL。此外,还包括了调用WebService接口的方法。
摘要由CSDN通过智能技术生成

Post 请求方式

 /**
     *  调用接口   post请求方式
     * @param url
     * @param params
     * @param token
     * @return
     * @throws Exception
     */
    public static String doPost(String url, String params, String token) throws Exception {
        log.info("invoke url:"+url+" \nparams:"+params + " \ntoken:"+token);
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(url);// 创建httpPost
        httpPost.setHeader("Accept", "application/json");
        httpPost.setHeader("Content-Type", "application/json");
        if(!"".equals(token)) {
            httpPost.setHeader("Authorization", token);
        }
        String charSet = "UTF-8";
        StringEntity entity = new StringEntity(params, charSet);
        httpPost.setEntity(entity);
        CloseableHttpResponse response = null;
        int state = 999;
        String jsonString = "";
        try {
            response = httpclient.execute(httpPost);
            StatusLine status = response.getStatusLine();
            state = status.getStatusCode();
            if (state == HttpStatus.SC_OK) {
                HttpEntity responseEntity = response.getEntity();
                jsonString = EntityUtils.toString(responseEntity);
            } else{
                HttpEntity responseEntity = response.getEntity();
                jsonString = EntityUtils.toString(responseEntity);
                log.info("jsonString:"+jsonString + " 请求返回状态:" + state + "("+url+")");
            }
        } catch(Exception e) {
            e.printStackTrace();
            log.info("url:"+url+" params:"+params+" Exception:"+e.getMessage());
        } finally {
            if (response != null) {
                try {
                    response.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            try {
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return jsonString;
    }

Get 请求方式

 /**
     * 带参数的get请求
     * @param url
     * @param param
     * @return String
     */
    public static String doGet(String url, String param) {
        /*
         * 由于GET请求的参数都是拼装在URL地址后方,所以我们要构建一个URL,带参数
         */
        // 创建Httpclient对象
        CloseableHttpClient httpclient = HttpClients.createDefault();
        String resultString = "";
        CloseableHttpResponse response = null;
        try {
            // 创建uri
            URIBuilder builder = new URIBuilder(url);
            if (param != null) {
                builder.addParameter("wsdl", param);
            }
            URI uri = builder.build();
            // 创建http GET请求
            HttpGet httpGet = new HttpGet(uri);
            // 执行请求
            response = httpclient.execute(httpGet);
            // 判断返回状态是否为200
            if (response.getStatusLine().getStatusCode() == 200) {
                resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (response != null) {
                    response.close();
                }
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return resultString;
    }

delete 请求方式

 /**
     * delete 请求方式
     * @param url
     * @param params
     * @param token
     * @return
     * @throws Exception
     */
    public static String doDelete(String url, String params, String token) throws Exception {
        log.info("invoke url:"+url+" \nparams:"+params + " \ntoken:"+token);
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpDeleteWithBody httpDel = new HttpDeleteWithBody(url);
        httpDel.setHeader("Content-type", "application/json; charset=utf-8");
        String jsonString = "";
        int state = 999;
        try {
            if (null != params) {
                // 构建消息实体 Map转json字符串
                StringEntity entity = new StringEntity(params, ContentType.APPLICATION_JSON);
                httpDel.setEntity(entity);
            }
            CloseableHttpResponse response = httpclient.execute(httpDel);
            StatusLine status = response.getStatusLine();
            state = status.getStatusCode();
            if (state == HttpStatus.SC_OK) {
                HttpEntity responseEntity = response.getEntity();
                jsonString = EntityUtils.toString(responseEntity);
            } else{
                HttpEntity responseEntity = response.getEntity();
                jsonString = EntityUtils.toString(responseEntity);
                log.info("jsonString:"+jsonString + " 请求返回状态:" + state + "("+url+")");
            }
        } catch (IOException e) {
            log.info("delete请求提交失败:" + url, e);
        } finally {
            httpDel.releaseConnection();
        }

        return jsonString;
    }

webservice 接口

    /**
     * webService 远程调用
     * @param params   需要传递的参数
     * @param url      对端接口地址
     * @param method   对端的方法名
     * @return    Call 方法
     */
    public static String send(String params,String url,String method) {
        log.info("===传递的参数==="+params);
        log.info("===请求路径==="+url);
        String result="";
        org.apache.axis.client.Service service = new org.apache.axis.client.Service();
        Call call = null;
        try {
            try {
                call = service.createCall();
            } catch (javax.xml.rpc.ServiceException e) {
                e.printStackTrace();
            }
        } catch (ServiceException e) {
            e.printStackTrace();
        }
        //10.174.242.24:7001
        call.setTargetEndpointAddress(url);
        //3、设置参数
        call.addParameter("in0",
                org.apache.axis.encoding.XMLType.XSD_STRING,
                javax.xml.rpc.ParameterMode.IN);// 接口的参数
        // 设置返回类型
        call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
        try {
            result = (String) call.invoke(QName.valueOf(method), new Object[]{params});
        } catch (Exception e) {
            e.printStackTrace();
            throw new NrmsYnException("接口异常");
        }
        return result;
    }

webService 远程调用 soapClient 方法

/**
     * webService 远程调用 soapClient 方法
     * @param wsdlUrl  对端接口地址
     * @param params  需要传递的参数
     * @param method  对端的方法名
     * @return        字符
     */
    public static String soapClient(String wsdlUrl,String params,String method) {
        log.info("===传递的参数==="+params);
        log.info("===请求路径==="+wsdlUrl);
        log.info("===请求接口的方法名==="+method);
        String result="";
        //创建soap客户端
        SoapClient soapClient = SoapClient.create(wsdlUrl)
                // 设置调用方法名称以及命名空间   方法名和命名空间
                .setMethod(method, "http://WebXml.com.cn/")
                // 设置参数名称及参数值   theCityName 为参数名称,params 为参数数据内容
                .setParam("theCityName", params)
                // 设置超时时间
                .setConnectionTimeout(15000)
                .setReadTimeout(15000)
                .timeout(15000);
        // 还有其他可以配置,根据自己的需求配置
        // 调用webservice接口
        result = soapClient.send();
        // 打印
        System.out.println(result);
        return result;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值