热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

httpClient发送post请求的demo

***发送HttpClient**publicclassHttpClientTest{publicstaticvoidmain(String[]args)throwsI

/**
* 发送HttpClient
*
*/
public class HttpClientTest {

public static void main(String[] args) throws IOException {
delete();
}

public static void query() throws IOException {

CloseableHttpClient client = HttpClientBuilder.create().build();

HttpPost post = new HttpPost(
"http://localhost:7001/pa18shoplife/lifegame/ItemareaBag/query.do3");

Map map = new HashMap();
List list = new ArrayList();
list.add("41");
list.add("42");
map.put("ids", list);
map.put("pageNumber", "1");
map.put("pageSize", "5000");
String str = Utils.convertToString4Obj(map);
System.out.println(str);

respCallback(client, post, str);
}

public static void saveorupdate() throws IOException,
UnsupportedEncodingException, ClientProtocolException {
CloseableHttpClient client = HttpClientBuilder.create().build();

HttpPost post = new HttpPost(
"http://localhost:7001/pa18shoplife/lifegame/ItemareaBag/saveorupdate.do3");

List list = new ArrayList();

LifeGameItemareaBagDTO dto = new LifeGameItemareaBagDTO();
dto.setId(41);
dto.setRoleId(3);
dto.setGridbag("11111");
dto.setGridnum(3);
list.add(dto);

dto = new LifeGameItemareaBagDTO();
dto.setId(42);
dto.setRoleId(4);
dto.setGridbag("222222");
dto.setGridnum(3);
list.add(dto);

String jsOnStr= JSON.json(list);
System.out.println(jsonStr);
respCallback(client, post, jsonStr);
}

public static void delete() throws IOException,
UnsupportedEncodingException, ClientProtocolException {
CloseableHttpClient client = HttpClientBuilder.create().build();

HttpPost post = new HttpPost(
"http://localhost:7001/pa18shoplife/lifegame/ItemareaBag/delete.do3");
List> list = new ArrayList>();

Map map1 = new HashMap();
map1.put("id", "41");

Map map2 = new HashMap();
map2.put("id", "42");

list.add(map1);
list.add(map2);

String str = Utils.convertToString4Obj(list);
System.out.println(str);
respCallback(client, post, str);
}

private static void respCallback(CloseableHttpClient client, HttpPost post,
String str) throws IOException {
post.setEntity(new StringEntity(str, "utf-8"));

ByteArrayOutputStream bos = new ByteArrayOutputStream();
InputStream ins = null;
try {
CloseableHttpResponse resp = client.execute(post);
if (resp.getStatusLine().getStatusCode() == 200) {
ins = resp.getEntity().getContent();
IOUtils.copy(ins, bos);
System.out.println(new String(bos.toByteArray(), "UTF-8"));
} else {
System.out.println("error..............");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(ins);
IOUtils.closeQuietly(bos);
client.close();
}
}

}

/**
* 物品区域 --> 背包
*
*/
public class LifeGameItemareaBagDTO {

private long id;
private long roleId;
private String gridbag;
private int gridnum;

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

public long getRoleId() {
return roleId;
}

public void setRoleId(long roleId) {
this.roleId = roleId;
}

public String getGridbag() {
return gridbag;
}

public void setGridbag(String gridbag) {
this.gridbag = gridbag;
}

public int getGridnum() {
return gridnum;
}

public void setGridnum(int gridnum) {
this.gridnum = gridnum;
}

}

/**
* 专用工具类
*
*/
public class Utils {

private static final Logger logger = LoggerFactory.getLogger(Utils.class);

/**
* @param obj
* @return 返回JSON字符串
*/
public static String convertToString4Obj(T obj){

try {
return JSON.json(obj);
} catch (IOException e) {
e.printStackTrace();
}
return "{\"resultCode\":-500,\"msg\":\"不能把Obj变为JSON字符串.\"}";
}

/**
* @param clazz
* @param req
* @return
* @throws Exception
*
* 根据请求的request 的 body 返回 clazz的list形式
*/
public static List convertToListObject(Class clazz,
HttpServletRequest req) throws Exception{
return convertToListObject(clazz, toString(req));
}

/**
* @param clazz
* @param jsonStr
* @return
*
* 根据字符串返回clazz的list形式
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static List convertToListObject(Class clazz, String jsonStr)
throws Exception{
List retVal = new ArrayList();
if(StringUtils.isBlank(jsonStr)){
return retVal;
}
try {
Object obj = JSON.parse(jsonStr);
if (obj instanceof JSONArray) {
List list = JSON.parse(jsonStr, List.class);
if(clazz == Map.class){
return (List) list;
}
for (Map map : list) {
T t = clazz.newInstance();
BeanUtils.copyProperties(t, map);
retVal.add(t);
}
} else if (obj instanceof JSONObject) {
Map map = JSON.parse(jsonStr, Map.class);
if(clazz == Map.class){
retVal.add((T) map);
return retVal;
}
T t = clazz.newInstance();
BeanUtils.copyProperties(t, map);
retVal.add(t);
}
} catch (ParseException e) {
logger.info("parse JSON error.......",e);
throw e;
} catch (InstantiationException e) {
logger.info("instance clazz[{}] error.......",clazz,e);
throw e;
} catch (IllegalAccessException e) {
logger.info("IllegalAccessException........",e);
throw e;
} catch (InvocationTargetException e) {
logger.info("InvocationTargetException........",e);
throw e;
}
return retVal;
}

/**
* @param req
* @return
* @throws IOException
*
* 返回req的body字符串
*/
public static String toString(HttpServletRequest req) throws IOException {
ByteArrayOutputStream writer = new ByteArrayOutputStream();
InputStream ins = null;
String retVal = null;
try {
ins = req.getInputStream();
if (ins != null) {
IOUtils.copy(ins, writer);
retVal = new String(writer.toByteArray(),"utf-8");
}
} finally {
IOUtils.closeQuietly(ins);
IOUtils.closeQuietly(writer);
}
logger.info("request body is [{}]",retVal);
return retVal;
}

/**
* @param req
* @return
* @throws IOException
*
*/
@SuppressWarnings("rawtypes")
public static Map convertToMap(HttpServletRequest req) throws Exception {
String jsOnStr= toString(req);
if(StringUtils.isNotBlank(jsonStr)){
return JSON.parse(jsonStr, Map.class);
}
return null;
}

}

相关jar包:

commons-beanutils.jar
commons-collections-3.1.jar
commons-io-1.4.jar
commons-lang.jar
commons-logging.jar
dubbo-2.4.9.1.jar
httpclient-4.3.6.jar
httpcore-4.3.3.jar
javaee.jar
javassist-3.16.1-GA.jar
log4j-1.2.15.jar
slf4j-api-1.7.2.jar
slf4j-log4j12-1.7.2.jar






推荐阅读
  • 本文介绍了一个基本的同步Socket程序,演示了如何实现客户端与服务器之间的简单消息传递。此外,文章还概述了Socket的基本工作流程,并计划在未来探讨同步与异步Socket的区别。 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • 2023年1月28日网络安全热点
    涵盖最新的网络安全动态,包括OpenSSH和WordPress的安全更新、VirtualBox提权漏洞、以及谷歌推出的新证书验证机制等内容。 ... [详细]
  • 本文基于Java官方文档进行了适当修改,旨在介绍如何实现一个能够同时处理多个客户端请求的服务端程序。在前文中,我们探讨了单客户端访问的服务端实现,而本篇将深入讲解多客户端环境下的服务端设计与实现。 ... [详细]
  • 1、编写一个Java程序在屏幕上输出“你好!”。programmenameHelloworld.javapublicclassHelloworld{publicst ... [详细]
  • D17:C#设计模式之十六观察者模式(Observer Pattern)【行为型】
    一、引言今天是2017年11月份的最后一天,也就是2017年11月30日,利用今天再写一个模式,争取下个月(也就是12月份& ... [详细]
  • 本文介绍如何使用Java实现AC自动机(Aho-Corasick算法),以实现高效的多模式字符串匹配。文章涵盖了Trie树和KMP算法的基础知识,并提供了一个详细的代码示例,包括构建Trie树、设置失败指针以及执行搜索的过程。 ... [详细]
  • 本文主要解决了在编译CM10.2时出现的关于Samsung Exynos 4 HDMI HAL库中SecHdmiV4L2Utils.cpp文件的编译错误。 ... [详细]
  • 基于OpenCV的小型图像检索系统开发指南
    本文详细介绍了如何利用OpenCV构建一个高效的小型图像检索系统,涵盖从图像特征提取、视觉词汇表构建到图像数据库创建及在线检索的全过程。 ... [详细]
  • 解决宝塔面板Nginx反向代理缓存问题
    本文介绍如何在宝塔控制面板中通过编辑Nginx配置文件来解决反向代理中的缓存问题,确保每次请求都能从服务器获取最新的数据。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • Kafka入门指南
    本文将详细介绍如何在CentOS 7上安装和配置Kafka,包括必要的环境准备、JDK和Zookeeper的配置步骤。 ... [详细]
  • Spring Boot与Graylog集成实现微服务日志聚合与分析
    本文介绍了如何在Graylog中配置输入源,并详细说明了Spring Boot项目中集成Graylog的日志聚合和分析方法,包括logback.xml的多环境配置。 ... [详细]
author-avatar
口十又欠又欠
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有