我们使用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") ;//第三步:得到需要发送的bodyString 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;}

multipart/form-data请求方式:

    public static String uploadFile(String url, Map<String, Object> mapData){CloseableHttpClient httpClient = HttpClients.createDefault();String result = "";//每个post参数之间的分隔。随意设定,只要不会和其他的字符串重复即可。String boundary ="----WebKitFormBoundary5ZMULAAn6mngkXzn";try {HttpPost httpPost = new HttpPost(url);//设置请求头httpPost.setHeader("Content-Type","multipart/form-data; boundary="+boundary);//HttpEntity builderMultipartEntityBuilder builder = MultipartEntityBuilder.create();//字符编码builder.setCharset(Charset.forName("UTF-8"));//模拟浏览器builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);//boundarybuilder.setBoundary(boundary);//multipart/form-data
//            builder.addPart("multipartFile",new FileBody(filePath));// binary
//            builder.addBinaryBody("name=\"multipartFile\"; filename=\"test.docx\"", new FileInputStream(file), ContentType.MULTIPART_FORM_DATA, fileName);// 文件流
//            //其他参数for (String key : mapData.keySet()) {builder.addTextBody(key, mapData.get(key).toString(),  ContentType.create("text/plain", Consts.UTF_8));}//HttpEntityHttpEntity entity = builder.build();httpPost.setEntity(entity);// 执行提交HttpResponse response = httpClient.execute(httpPost);//响应HttpEntity responseEntity = response.getEntity();if (responseEntity != null) {// 将响应内容转换为字符串result = EntityUtils.toString(responseEntity, Charset.forName("UTF-8"));}} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();} finally {try {httpClient.close();} catch (IOException e) {e.printStackTrace();}}System.err.println("result"+result);return result;}

java根据PostMan发送请求:设置接口请求工具类。相关推荐

  1. java给微信发送get和post请求

    现在做微信订阅号.微信公众号,微信企业号都需要开发者给微信服务器发送get或post请求.具体发送get或post请求源码如下: package com.ciji.utils;import java. ...

  2. Java操作百万数据量Excel导入导出工具类(程序代码教程)

    Java操作百万数据量Excel导入导出工具类(程序代码教程): # 功能实现1.自定义导入数据格式,支持配置时间.小数点类型(支持单/多sheet)(2种方式:本地文件路径导入(只支持xls.xls ...

  3. java 自定义json解析注解 复杂json解析 工具类

    java 自定义json解析注解 复杂json解析 工具类 目录 java 自定义json解析注解 复杂json解析 工具类 1.背景 2.需求-各式各样的json 一.一星难度json[json对象 ...

  4. ImageView可直接调用的,根据URL设置图片的工具类

    ImageView 是Android编程中最常用的组件之一. 但是根据图片的URL设置图片却很麻烦.因为获取网络图片的操作必须在异步线程中进行,根据URL设置ImageView图片就可能需要进行线程间 ...

  5. java中使用jxl导出excel表格的工具类(全网唯一亲测可用,在原来基础上扩展)

    java中后台导出excel的话,有两种方案,一是使用poi(不过由于是windows版本的,存在不兼容,但功能更多,更强大),而是使用jxl(纯java编写,不过兼容,简单一些),可以设置输出的ex ...

  6. java中bitconverter_【Java】BitConverter(数字转字节数组工具类)

    import java.nio.ByteOrder; import java.nio.charset.Charset; /** * 数字转字节数组工具类 */ public class BitConv ...

  7. java sm3国密算法加密、验证工具类

    java sm3国密算法加密.验证工具类 说明 maven依赖 完整代码 测试 说明 由于本人并不专于算法和密码学,所以如果发现工具类存在问题或者可优化地方,欢迎评论处提出. 工具类也可以直接使用封装 ...

  8. Java 切割身份证地址,省市区 详细地址工具类

    工具类①: AddressAnalysisUtil.java import org.apache.commons.lang3.StringUtils; import java.util.Arrays; ...

  9. Java实现HttpClient发送GET、POST请求(https、http)

    原文链接:https://www.cnblogs.com/klslb/p/9121276.html 1.maven <dependency><groupId>org.apach ...

最新文章

  1. ISOOSI网络模型的通俗解析
  2. NTFS for Mac OS X:使用Brew安裝NTFS-3G
  3. java编写存钱_用Java编写一个简单的存款
  4. java将字符串和字符串数组互相转换方法
  5. file_operations结构
  6. setTimeout和setInterval的区别
  7. 前端学习(3058):vue+element今日头条管理-回顾
  8. 数据结构复习笔记(2)
  9. linux 连接 android,linux下android连接真机测试
  10. jsch 长连接_广濑连接器DF13
  11. 【vscode】去除黄色波浪下划线
  12. java alder32,[java][io][ZIP]应用GZIP进行压缩和解压缩
  13. 蓝桥杯day7——DFSBFS
  14. MOOC上的excel技巧
  15. ZYNQ EMMC/FLASH/SD卡硬件性能测试
  16. 外购计算机软件加速摊销的政策,固定资产或购入软件等可以加速折旧或摊销的优惠操作...
  17. 虚拟现实跑步机Kat Walk自由来袭
  18. 基于JAVA养老院管理系统计算机毕业设计源码+系统+数据库+lw文档+部署
  19. 开源蜜罐T-pot 19.03安装和使用
  20. SPSS MODELER笔记1----数据基本处理和整体方法概念

热门文章

  1. 前端面试百问百答(上)
  2. 工匠社联手王者荣耀打造盾山机器人,ChinaJoy首亮相
  3. 魔兽争霸之PHP设计模式-工厂模式[Factory]
  4. C语言如何解释abc
  5. SpringBoot 定时器每月最后一天执行解决方法
  6. android 斑马线进度条,jQuery简单斑马线样式loading进度条动画特效
  7. 1024+996=2020,今天注定996,一大波暴击电子美图送给大家!
  8. 建筑行业固定资产管理解决方案
  9. 软件工程导论 复习笔记 (1)
  10. 一个讨论引发关于js中函数声明,函数表达式,形参与变量声明赋值引发的一些事(http://www.cnblogs.com/zhouyongtao/archive/2012/11/22/2783089)