【已弃用】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

相关文章

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一