【已弃用】http post 方法传递参数的2种方式(api接口,或者说postman的请求)

本文主要是介绍【已弃用】http post 方法传递参数的2种方式(api接口,或者说postman的请求),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http post 方法传递参数的2种方式

  • StringEntity
  • UrlEncodedFormEntity
  • 项目实例

StringEntity

try{  HttpPost httpPost = new HttpPost(url);  //param参数,可以为param="key1=value1&key2=value2"的一串字符串,或者是jsonObject String param1="key1=value1&key2=value2"JSONObject param2= new JSONObject();  param2.put("key1", "value1");  param2.put("key2t"," value2");  StringEntity stringEntity = new StringEntity(param1);  StringEntity stringEntity = new StringEntity(param2.toString());  stringEntity.setContentType("application/x-www-form-urlencoded");  httpPost.setEntity(stringEntity);  HttpClient client = new DefaultHttpClient();   HttpResponse httpResponse = client.execute(httpPost);  String result = EntityUtils.toString(httpResponse.getEntity(), HTTP.UTF_8);  } catch(IOException e){  }  

UrlEncodedFormEntity

// An highlighted blockList<NameValuePair> pairs = new ArrayList<NameValuePair>();  NameValuePair pair1 = new BasicNameValuePair("supervisor", supervisorEt.getEditableText().toString());  NameValuePair pair2 = new BasicNameValuePair("content", superviseContentEt.getEditableText().toString());  NameValuePair pair3 = new BasicNameValuePair("userId", String.valueOf(signedUser.getId()));  pairs.add(pair1);  pairs.add(pair2);  pairs.add(pair3);  httpPost.setEntity(new UrlEncodedFormEntity(pairs, HTTP.UTF_8)) 

项目实例

需要导入的jar包
在这里插入图片描述

import com.dtstack.flinkx.exception.WriteRecordException;
import com.dtstack.flinkx.outputformat.BaseRichOutputFormat;
import com.dtstack.flinkx.restapi.common.HttpUtil;
import com.dtstack.flinkx.util.ExceptionUtil;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.apache.flink.types.Row;
import org.apache.http.HttpStatus;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.impl.client.CloseableHttpClient;import java.io.IOException;
import java.util.*;

//getRequest

HttpRequestBase request = HttpUtil.getRequest(method, requestBody, header, url);
/* 20210803 wx 修改post访问api josn参数无法传输的问题*/public static HttpRequestBase getRequest(String method,Map<String, Object> requestBody,Map<String, String> header,String url) {LOG.debug("current request url: {}  current method:{} \n", url, method);HttpRequestBase request = null;if (HttpMethod.GET.name().equalsIgnoreCase(method)) {request = new HttpGet(url);} else if (HttpMethod.POST.name().equalsIgnoreCase(method)) {HttpPost post = new HttpPost(url);post.setEntity(getEntityData(requestBody));request = post;} else {throw new UnsupportedOperationException("Unsupported method:" + method);}for (Map.Entry<String, String> entry : header.entrySet()) {request.addHeader(entry.getKey(), entry.getValue());}return request;}

//getEntityData

post.setEntity(getEntityData(requestBody));
public static StringEntity getEntityData(Map<String, Object> body) {String params =  jsonToParams(String.valueOf(gson.toJson(body.get("json"))));StringEntity stringEntity = new StringEntity(params, StandardCharsets.UTF_8);//stringEntity.setContentEncoding(StandardCharsets.UTF_8.name());这里设置了UTF-8反而不可以了return stringEntity;
}

//jsonToParams

String params =  jsonToParams(String.valueOf(gson.toJson(body.get("json"))));
/*** 20210803* json 转化为params 的格式 param参数,可以为"key1=value1&key2=value2"的一串字符串* @param jsonStr* @return*/public static String jsonToParams(String jsonStr){String params = null;try {Map<String,Object> map2= JSONObject.parseObject(jsonStr, HashMap.class);for (Map.Entry<String, Object> entry : map2.entrySet()) {System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());if(params==null){params = entry.getKey()+"="+String.valueOf(entry.getValue());}else{params = params +"&"+ entry.getKey()+"="+String.valueOf(entry.getValue());}}return params;}catch (Exception ex){throw new RuntimeException("json转map出错------------------------------------------------------------",ex);}}

这篇关于【已弃用】http post 方法传递参数的2种方式(api接口,或者说postman的请求)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005201

相关文章

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

golang中reflect包的常用方法

《golang中reflect包的常用方法》Go反射reflect包提供类型和值方法,用于获取类型信息、访问字段、调用方法等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录reflect包方法总结类型 (Type) 方法值 (Value) 方法reflect包方法总结

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方