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") ;//第三步:得到需要发送的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发送请求:设置接口请求工具类。相关推荐
- java给微信发送get和post请求
现在做微信订阅号.微信公众号,微信企业号都需要开发者给微信服务器发送get或post请求.具体发送get或post请求源码如下: package com.ciji.utils;import java. ...
- Java操作百万数据量Excel导入导出工具类(程序代码教程)
Java操作百万数据量Excel导入导出工具类(程序代码教程): # 功能实现1.自定义导入数据格式,支持配置时间.小数点类型(支持单/多sheet)(2种方式:本地文件路径导入(只支持xls.xls ...
- java 自定义json解析注解 复杂json解析 工具类
java 自定义json解析注解 复杂json解析 工具类 目录 java 自定义json解析注解 复杂json解析 工具类 1.背景 2.需求-各式各样的json 一.一星难度json[json对象 ...
- ImageView可直接调用的,根据URL设置图片的工具类
ImageView 是Android编程中最常用的组件之一. 但是根据图片的URL设置图片却很麻烦.因为获取网络图片的操作必须在异步线程中进行,根据URL设置ImageView图片就可能需要进行线程间 ...
- java中使用jxl导出excel表格的工具类(全网唯一亲测可用,在原来基础上扩展)
java中后台导出excel的话,有两种方案,一是使用poi(不过由于是windows版本的,存在不兼容,但功能更多,更强大),而是使用jxl(纯java编写,不过兼容,简单一些),可以设置输出的ex ...
- java中bitconverter_【Java】BitConverter(数字转字节数组工具类)
import java.nio.ByteOrder; import java.nio.charset.Charset; /** * 数字转字节数组工具类 */ public class BitConv ...
- java sm3国密算法加密、验证工具类
java sm3国密算法加密.验证工具类 说明 maven依赖 完整代码 测试 说明 由于本人并不专于算法和密码学,所以如果发现工具类存在问题或者可优化地方,欢迎评论处提出. 工具类也可以直接使用封装 ...
- Java 切割身份证地址,省市区 详细地址工具类
工具类①: AddressAnalysisUtil.java import org.apache.commons.lang3.StringUtils; import java.util.Arrays; ...
- Java实现HttpClient发送GET、POST请求(https、http)
原文链接:https://www.cnblogs.com/klslb/p/9121276.html 1.maven <dependency><groupId>org.apach ...
最新文章
- ISOOSI网络模型的通俗解析
- NTFS for Mac OS X:使用Brew安裝NTFS-3G
- java编写存钱_用Java编写一个简单的存款
- java将字符串和字符串数组互相转换方法
- file_operations结构
- setTimeout和setInterval的区别
- 前端学习(3058):vue+element今日头条管理-回顾
- 数据结构复习笔记(2)
- linux 连接 android,linux下android连接真机测试
- jsch 长连接_广濑连接器DF13
- 【vscode】去除黄色波浪下划线
- java alder32,[java][io][ZIP]应用GZIP进行压缩和解压缩
- 蓝桥杯day7——DFSBFS
- MOOC上的excel技巧
- ZYNQ EMMC/FLASH/SD卡硬件性能测试
- 外购计算机软件加速摊销的政策,固定资产或购入软件等可以加速折旧或摊销的优惠操作...
- 虚拟现实跑步机Kat Walk自由来袭
- 基于JAVA养老院管理系统计算机毕业设计源码+系统+数据库+lw文档+部署
- 开源蜜罐T-pot 19.03安装和使用
- SPSS MODELER笔记1----数据基本处理和整体方法概念
热门文章
- 前端面试百问百答(上)
- 工匠社联手王者荣耀打造盾山机器人,ChinaJoy首亮相
- 魔兽争霸之PHP设计模式-工厂模式[Factory]
- C语言如何解释abc
- SpringBoot 定时器每月最后一天执行解决方法
- android 斑马线进度条,jQuery简单斑马线样式loading进度条动画特效
- 1024+996=2020,今天注定996,一大波暴击电子美图送给大家!
- 建筑行业固定资产管理解决方案
- 软件工程导论 复习笔记 (1)
- 一个讨论引发关于js中函数声明,函数表达式,形参与变量声明赋值引发的一些事(http://www.cnblogs.com/zhouyongtao/archive/2012/11/22/2783089)