前几天做了一个定时导入数据的接口,需要发送http请求,第一次做这种的需求,特地记一下子,

导包

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.SortedMap;
import java.util.TreeMap;

import org.apache.http.HttpStatus;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

 CloseableHttpResponse response;// 响应类,
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(JTR_QUERY_ORDER); //请求url // 转json参数
String paramJson = JSONObject.fromObject(sortedMap).toString();
StringEntity stringEntity = new StringEntity(paramJson,ContentType.create("text/json", "UTF-8"));
httpPost.setEntity(stringEntity); response = httpClient.execute(httpPost); //这种是发送json请求参数的,发送form形式参数的可以通过 SortedMap<String, String> sortedMap = packetRequestParameters(cash, orderNum, authCode, payType, mchId); List<NameValuePair> params = new ArrayList<NameValuePair>(sortedMap.size());
if (!sortedMap.isEmpty()) {
  for (Map.Entry<String, String> parameter : sortedMap.entrySet()) {
    params.add(new BasicNameValuePair(parameter.getKey(), parameter
    .getValue()));
  }
}
httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); //设置请求头信息可以通过 Map<String, String> headerMap = new HashMap<>();
headerMap.put("X-QF-SIGN", sortedMap.get("sign"));
headerMap.put("X-QF-APPCODE", APP_CODE);//分配给开发者的app_code,开发者的唯一标示 if (!headerMap.isEmpty()) {
  for (Map.Entry<String, String> vo : headerMap.entrySet()) {
    httpPost.setHeader(vo.getKey(), vo.getValue());
  }
} if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 3 请求成功,处理请求结果
if (response != null && response.getEntity() != null) {
  String string = EntityUtils.toString(response.getEntity(),"utf-8");
  // String unescapeJava = StringEscapeUtils.unescapeJava(string);//java反转义,示例中不需要所以注释了
  JSONObject resultObject = JSONObject.fromObject(string);
// 如果是数组类型的话使用 JSONArray resultObject = JSONArray.fromObject(fromBase64);
  // log.info("定时导入---->返回数据3: " + resultObject.toString());   // 插入数据   flag = insertJtrOrder(resultObject); }else{   flag = false;   log.error("订单定时导入---->系统出错"); } }else{   flag = false;   log.error("订单定时导入---->请求失败"); }

CloseableHttpResponse response;// 响应类,

CloseableHttpClient httpClient = HttpClients.createDefault();

HttpPost httpPost = new HttpPost(JTR_QUERY_ORDER); //请求url

// 转json参数

String paramJson = JSONObject.fromObject(sortedMap).toString();

StringEntity stringEntity = new StringEntity(paramJson,ContentType.create("text/json", "UTF-8"));

httpPost.setEntity(stringEntity);

response = httpClient.execute(httpPost);

这种是发送json请求参数的,发送form形式的可以通过

SortedMap<String, String> sortedMap = packetRequestParameters(cash, orderNum, authCode, payType, mchId);

List<NameValuePair> params = new ArrayList<NameValuePair>(sortedMap.size());
if (!sortedMap.isEmpty()) {
for (Map.Entry<String, String> parameter : sortedMap.entrySet()) {
params.add(new BasicNameValuePair(parameter.getKey(), parameter
.getValue()));
}
}
httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));

设置请求头信息可以通过

Map<String, String> headerMap = new HashMap<>();
headerMap.put("X-QF-SIGN", sortedMap.get("sign"));
headerMap.put("X-QF-APPCODE", APP_CODE);//分配给开发者的app_code,开发者的唯一标示

if (!headerMap.isEmpty()) {
for (Map.Entry<String, String> vo : headerMap.entrySet()) {
httpPost.setHeader(vo.getKey(), vo.getValue());
}
}

if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 3 请求成功,处理请求结果
if (response != null && response.getEntity() != null) {
String string = EntityUtils.toString(response.getEntity(),"utf-8");
// String unescapeJava = StringEscapeUtils.unescapeJava(string);//java反转义,示例中不需要所以注释了
JSONObject resultObject = JSONObject.fromObject(string);
// log.info("JTR订单定时导入---->返回数据3: " + resultObject.toString());
// 插入数据
flag = insertJtrOrder(resultObject);
}else{
flag = false;
log.error("JTR订单定时导入---->系统出错");
}
}else{
flag = false;
log.error("JTR订单定时导入---->请求失败");
}

大概就是这样,以后有别的东西再补充把

在Java中发送http的post请求,设置请求参数等等的更多相关文章

  1. Java中发送http的get、post请求

    近期做项目中,须要把消息通过中间件的形式通过http请求的方式推送给第三方,因此用到了http协议,小编花费了一个多小时.对于http协议中的post和get请求,封装了一个工具类.以下与大家分享一下 ...

  2. java 中利用反射机制获取和设置实体类的属性值

    摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...

  3. java中发送http请求的方法

    package org.jeecgframework.test.demo; import java.io.BufferedReader; import java.io.FileOutputStream ...

  4. java中如何模拟真正的同时并发请求?

    有时需要测试一下某个功能的并发性能,又不要想借助于其他工具,索性就自己的开发语言,来一个并发请求就最方便了. java中模拟并发请求,自然是很方便的,只要多开几个线程,发起请求就好了.但是,这种请求, ...

  5. JAVA中发送电子邮件的方法

    JAVA中发送邮件的方法不复杂,使用sun的JavaMail的架包就可以实现.  一.下载JavaMail的架包,并导入项目中,如下: 二.附上代码例子,如下: 1.在main函数中对各项参数进行赋值 ...

  6. java中带图片按钮的大小设置

    在java部分需要用到图形界面编程的项目中,经常会使用图片设置对按钮进行美化,但是使用时会出现一个很麻烦的问题,那就是按钮的大小默认按照图片的大小来显示,这大大降低了界面的美观程度: 按照方法: JB ...

  7. Java开发学习(二十四)----SpringMVC设置请求映射路径

    一.环境准备 创建一个Web的Maven项目 参考Java开发学习(二十三)----SpringMVC入门案例.工作流程解析及设置bean加载控制中环境准备 pom.xml添加Spring依赖 < ...

  8. AFNetworking请求设置请求头

    NSString *url = @"INPUT URL HERE"; AFHTTPRequestOperationManager *manager = [AFHTTPRequest ...

  9. requests模块发送带headers的Get请求和带参数的请求

    1.在PyCharm开发工具中新建try_params.py文件: 2.try_params.py文件中编写代码: import requests#设置请求Headers头部header = {&qu ...

随机推荐

  1. Linux Kernel 4.11首个候选版本开放下载

    Linus Torvalds宣布了即将到来的Linux Kernel 4.11内核分支的首个候选(RC)版本,用户可下载.编译并在自己的GNU/Linux发行版本中进行测试.Linus Torvald ...

  2. web前端与后端的理解区分

    要了解web前后端的区别,首先必须得清楚什么是web前端和web后端. 首先:web的本意是蜘蛛网和网的意思,在网页设计中我们称为网页的意思.现广泛译作网络.互联网等技术领域.表现为三种形式,即超文本 ...

  3. 关于asp.net MVC3 ----@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction

    1.带有Render的方法返回值是void,在方法内部进行输出:不带的返回值类型为MvcHtmlString,所以只能这样使用:@Html.Partial 对应 @{Html.RenderPartia ...

  4. HTML后续

    列表标签 <ul>.<ol>.<dl> 列表标签 无序列表 属性: type="属性值".属性值可以选: disc(实心原点,默认),squar ...

  5. [翻译] KYCircularProgress

    KYCircularProgress Flexible progress bar written in Swift. 用Swift语言编写的灵活的进度条控件. Features Gradation C ...

  6. 全网数据实时备份方案[inotify,sersync]

    环境搭建 0.环境安装   gcc  yum install gcc -y 1.安装inotify(源码软件包) 文件下载:https://files.cnblogs.com/files/ftl101 ...

  7. Salesforce的多态存储和SAP C4C的元数据存储仓库

    Salesforce Force.com integrates and optimizes several different data persistence technologies to del ...

  8. nfs 安装配置

    系统环境:centos 6.4 x86_64 minimal,记得是199个安装包. 两台机器(可以是虚拟机): 192.168.1.150--->a机器 192.168.1.11-----&g ...

  9. API接口数据自检

    这个周末的娱乐,通用模块,让后端自检,严格客户端按照文档的要求来,妈妈再也不担心我加班了,对某些团队来说,可能根本用不着,本是想到就尝试一把而已. 哎,傻X的客户端程序员,时间都去推辞扯淡打扮啦,好好 ...

  10. 从Vue-router到html5的pushState

    最近在用vue的时候突然想到一个问题 首先,我们知道vue实现的单页应用中一般不会去刷新页面,因为刷新之后页面中的vuex数据就不见了. 其次,我们也知道一般情况下,url变更的时候,比如指定loca ...