IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> java根据PostMan发送请求:设置接口请求工具类。 -> 正文阅读

[开发测试]java根据PostMan发送请求:设置接口请求工具类。

我们使用java代码进行接口远程调用第三方接口时,总会抒写接口代码,那么有这么多种方式进行发送请求。那我们应该怎么使用呢?
比如有webservice接口,比如有Post请求的接口,必须有Get请求的接口。比如传的参数有xml的形式,比如传的参数有json格式等等格式情况,那我们的接口请求代码应该如何区别,抒写呢?

我们要根据postMan中的方式来,只要是能够通过postMan发送成功的请求都可以使用
首先是我们的请求方式:
第一点:在postMan的请求方式有:GET、POST、PUT、DELETE请求。
第二点:在PostMan中我们需要传入url链接,那么new HttpGet(url)这里面的url就是链接地址。

GET:HttpGet httpGet = new HttpGet(url);
POST:HttpPost method = new HttpPost(url);
PUT:HttpPut put = new HttpPut(url);
DELETE:HttpDelete delete = new HttpDelete(url);

第三点:在PostMan中我们需要Params的时候:

HttpParams httpParams = new BasicHttpParams();
httpParams.setParameter("","");
httpParams.setParameter("","");
httpParams.setParameter("","");
method.setParams(httpParams);

第四点:在PostMan中我们需要设置Headers,其中方token或者字节编码的时候很使用。

HttpPost method = new HttpPost(url);
method.addHeader("","");
method.addHeader("","");
method.addHeader("","");

第五点:在PostMan中我们需要设置Body,其中需要传入参数,不管是xml还是json都可以。那么我们需要设置两个地方。
1、在第四点中的header中需要设置传入参数的是xml还是json:

method.addHeader("Content-Type","application/json;");这里是json
method.addHeader("Content-Type","application/xml;");这里是xml

2、在传回来的参数中我们需要设置返回的数据类型和字符编码集:param是发送的body参数。

StringEntity entity = new StringEntity(param, "utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json;");
method.setEntity(entity);//放入到method请求中。

第六点:这样进行发送请求:method是集合请求方式,Params,Headers,body参数以后的集合。然后进行发送。

CloseableHttpClient httpClient = HttpClients.createDefault();//得到发送。
 HttpResponse resultRep = httpClient.execute(method);

第七点:在PostMan中返回的数据,我们需要如下来接收:
/请求发送成功,并得到响应/

 if (resultRep.getStatusLine().getStatusCode() == 200) {
     String str = "";
     /**读取服务器返回过来的json字符串数据**/
     log.info("=========测试"+resultRep.toString());
     String str4 = EntityUtils.toString(resultRep.getEntity());
     log.info("========str4"+str4);
     result = str4;
 }

举例如下:
第一种方法:

 public static String getwebserviceNew(String method,String serviceUrl,String user,String pw,String param){
        try {
        //第一步:选择请求方式:
            PostMethod postMethod = null;
            postMethod = new PostMethod();
            postMethod.setPath(serviceUrl);
            String auth = "bearer "+pw;
      	//第二步:设置header参数
            postMethod.addRequestHeader("Authorization", auth);
            postMethod.setRequestHeader("Content-Type", "text/xml") ;
        //第三步:得到需要发送的body
            String xmlInfo = getXmlInfo(method,user,pw,param);
		//第四步:设置发送的参数编码集:
            postMethod.setRequestEntity(new StringRequestEntity(xmlInfo.toString(),"application/xml","UTF-8"));
            org.apache.commons.httpclient.HttpClient httpClient = new org.apache.commons.httpclient.HttpClient();
        //第五步:发送请求:
            int response = httpClient.executeMethod(postMethod); // 执行POST方法
            log.info("response--接口状态码-->"+response);
            String result = postMethod.getResponseBodyAsString() ;
            log.info("result-接口返回值-->"+result);
            return result;
        } catch (Exception e) {
            log.info("e----->"+e);
            //logger.info("请求异常"+e.getMessage(),e);
            throw new RuntimeException(e.getMessage());
        }
    }

    private static String getXmlInfo(String method,String fydm,String token,String xml) {
        StringBuilder sb = new StringBuilder();
        sb.append("<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:szft='http://szft.tdh/'>");
        sb.append("<soapenv:Header/>");
        sb.append("<soapenv:Body>");
        sb.append("<szft:"+method+">");
        sb.append("<fydm>"+fydm+"</fydm>");
        sb.append("<token>"+token+"</token>");
        sb.append("<xml>"+xml+"</xml>");
        sb.append("</szft:"+method+">");
        sb.append("</soapenv:Body>");
        sb.append("</soapenv:Envelope>");
        return sb.toString();
    }

第二种方法:

    /**
     * http请求接口,获取通达海token和获取通达海代理人使用
     * post请求
     * @param url         url地址
     * @param param     请求参数
     * @param token     token
     * @param ContentType     发送数据类型
     * @return
     * @throws IOException
     * @throws ClientProtocolException
     */
    public static String httpPostAllAgent(String url,String param,String token,String ContentType) throws ClientProtocolException, IOException{

        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        url = URLDecoder.decode(url, "UTF-8");
        CloseableHttpClient httpClient = HttpClients.createDefault();
        String result = null;
        HttpPost method = new HttpPost(url);
        Map<String, Object> headers = new HashMap<String, Object>();
        headers.put("Content-Type", ContentType);
        headers.put("Accept-Charset", "charset=utf-8");
        headers.put("Authorization", token);
        for (Map.Entry<String, Object> head : headers.entrySet()) {
            method.addHeader(head.getKey(), String.valueOf(head.getValue()));
        }
        //设置请求访问时间
        RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(1000*60).setConnectTimeout(1000*60).build();//设置请求和传输超时时间
        method.setConfig(requestConfig);

        if (null != param) {
            StringEntity entity = new StringEntity(param, "utf-8");
            entity.setContentEncoding("UTF-8");
            entity.setContentType(ContentType);
            method.setEntity(entity);
        }
        HttpResponse resultRep = httpClient.execute(method);
        /**请求发送成功,并得到响应**/
        if (resultRep.getStatusLine().getStatusCode() == 200) {
            String str = "";
            /**读取服务器返回过来的json字符串数据**/
            log.info("=========测试"+resultRep.toString());
            String str4 = EntityUtils.toString(resultRep.getEntity());
            log.info("========str4"+str4);
            result = str4;
        }
        return result;
    }
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:55:28  更:2022-03-30 18:58:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:46:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码