范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

HttpClient使用指南POST请求

  可能会用到的相关包import java.io.File; import java.nio.charset.Charset; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.methods.RequestBuilder; import org.apache.http.entity.ContentType; import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils;使用HttpClient发送一个表单POST请求try { 	CloseableHttpClient client = HttpClients.createDefault(); 	List paras = new ArrayList(); 	paras.add(new BasicNameValuePair("testIn1", "表单1")); 	paras.add(new BasicNameValuePair("testIn2", "true")); 	paras.add(new BasicNameValuePair("testIn3", "3")); 	paras.add(new BasicNameValuePair("testIn4", "20210929010101")); 	paras.add(new BasicNameValuePair("testIn5", "5.1")); 	HttpUriRequest post = RequestBuilder.post("http://localhost:9092/test.jsp")// 			.setEntity(new UrlEncodedFormEntity(paras, "GBK"))// 			.build(); 	HttpResponse res = client.execute(post); 	System.out.println(res.getEntity().getContentType().toString()); 	System.out.println(EntityUtils.toString(res.getEntity())); } catch (Exception e) { 	e.printStackTrace(); }创建一个请求客户端:HttpClients.createDefault(),用来实际发起调用post请求,可以类比成浏览器。组装表单请求数据:通过ArrayList容器组装NameValuePair类型的请求数据,一个NameValuePair对象里存的是一个键值对。创建一个post请求:通过请求构造器RequestBuilder的post方法构造一个post请求,通过setEntity方法向post请求里放置请求参数,请求参数需要通过UrlEncodedFormEntity对象包装,并指定编码字符集(这里是指对方编码 ),通过addHeader方法向post请求里追加请求头信息,请求头信息比如双方约定的token,通过build方法返回请求对象。发起post请求并获得响应:通过请求客户端的execute方法执行请求并获得返回值请求响应。获取响应结果:获取响应对象的实体HttpEntity,通过EntityUtils的toString方法将实体转成字符串(例子里为请求的一个jsp(html)页面,实际返回为jsp页面里html内容),这里一般还要指定字符集,尤其是当实体里没有指定字符集时。使用HttpClient发送一个JSON数据格式的POST请求try { 	CloseableHttpClient client = HttpClients.createDefault(); 	JSONObject json = new JSONObject(); 	json.put("str", "字符串"); 	json.put("num", 123); 	json.put("bool", true); 	json.put("date", Calendar.getInstance().getTime());//日期类型的一般会约定会特定格式的字符串,这里仅是示例 	json.put("ja", new JSONArray()); 	HttpUriRequest post = RequestBuilder.post("http://localhost:8181/auri")// 			.setEntity(new StringEntity(json.toString(), ContentType.APPLICATION_JSON))//json的content-type已经包含utf-8的编码了 			.build();             	System.out.println(post.toString()); 	HttpResponse res = client.execute(post); 	System.out.println("statusLine:" + res.getStatusLine().getStatusCode()); 	System.out.println(res.getEntity().getContentType().toString()); 	System.out.println(EntityUtils.toString(res.getEntity())); } catch (Exception e) { 	e.printStackTrace(); } 创建一个请求客户端:HttpClients.createDefault(),用来实际发起调用post请求,可以类比成浏览器。组装Json请求数据:通过JSONObject对象组装数据。创建一个post请求:通过请求构造器RequestBuilder的post方法构造一个post请求,通过setEntity方法向post请求里放置请求实体,请求实体需要通过StringEntity对象包装,并指定content-type为json,通过build方法返回请求对象。发起http请求并获得响应:通过请求客户端的execute方法执行请求并获得返回值请求响应。获取响应结果:获取响应对象的实体HttpEntity,通过EntityUtils的toString方法将实体转成字符串,这里一般还要指定字符集,尤其是当返回的实体里没有指定字符集时。使用HttpClient发送一个包含附件上传的POST请求try { 	CloseableHttpClient client = HttpClients.createDefault();             	MultipartEntityBuilder meb = MultipartEntityBuilder.create(); 	meb.setMode(HttpMultipartMode.RFC6532);//must 	meb.addBinaryBody("file1", new File("D:/abc.jpg")); 	meb.addBinaryBody("file2", new File("D:/你好.jpg")); 	meb.addTextBody("testIn1", "上传表单1", ContentType.DEFAULT_TEXT.withCharset("GBK"));//GBK or UTF-8, either is ok 	meb.addTextBody("testIn2", "true"); 	meb.addTextBody("aid", "3"); 	meb.setCharset(Charset.forName("UTF-8"));//must  	HttpUriRequest multiPost = RequestBuilder.post("http://localhost:9092/web/test")// 			.setEntity(meb.build())// 			.build();      	HttpResponse res = client.execute(multiPost); 	System.out.println("statusLine:" + res.getStatusLine().getStatusCode()); 	System.out.println(EntityUtils.toString(res.getEntity())); } catch (Exception e) { 	e.printStackTrace(); }
  1.创建一个请求客户端:HttpClients.createDefault(),用来实际发起调用post请求,可以类比成浏览器。
  2.组装表单请求数据:因需要传递文件,所以通过MultipartEntityBuilder构造器组装表单实体请求数据。
  2.1 设置mode为HttpMultipartMode.RFC6532(必须);
  2.2 设置字符集为UTF-8(必须);
  2.3 通过addBinaryBody追加文件;
  2.4 通过addTextBody追加文本参数,若文本为中文则必须指定字符集为GBK或者UTF-8。
  3.创建一个post请求:通过请求构造器RequestBuilder的post方法构造一个post请求,通过setEntity方法向post请求里放置请求参数,通过addHeader方法向post请求里追加请求头信息,请求头信息比如双方约定的token,通过build方法返回请求对象。
  4.发起post请求并获得响应:通过请求客户端的execute方法执行请求并获得返回值请求响应。
  5.获取响应结果:获取响应对象的实体HttpEntity,通过EntityUtils的toString方法将实体转成字符串,这里一般还要指定字符集,尤其是当实体里没有指定字符集时。
  注意:MultipartEntityBuilder必须指定mode为HttpMultipartMode.RFC6532,且必须设置字符集为UTF-8,否则若传递的文件名包含中文,则文件名乱码 ;对于普通的文本参数,中文指定UTF-8或者GBK接收方均未发现乱码情况;接收方需要将请求转为MultipartHttpServetRequest方可获取到文件,示例代码如下:public ModelAndView enterTest(HttpServletRequest req, HttpServletResponse res, DataObject para) throws Exception { 	System.out.println(req.getContentType()); 	MultipartHttpServletRequest mr = (MultipartHttpServletRequest) req; 	MultipartFile mf = mr.getFile("file2"); 	System.out.println("getOriginalFilename:" + mf.getOriginalFilename()); 	System.out.println("getName:" + mf.getName()); 	...... }
  若感觉对您有用,可以转发并关注,您的关注是对我莫大的支持!

同学们的老熟人李华被注册成商标了昨天,随着高考的最后一声铃响,2021年高考正式落下帷幕。一般来说,高考最后一门科目都是英语考试,而英语考题中最值得注意的就是英语写作部分了。每年,考生们都需要帮助一位名叫李华的同长城起名小能手,商标又出花样?起名是个技术活,长城汽车在这方面颇有心得,花式起名出圈,诸如哈佛大狗长城炮坦克300等,不仅名字如雷贯耳,销量也十分喜人。近日,小知查询发现,长城汽车不仅是起名小能手,在商标注册保挖高管注册OCar商标,OPPO也要造车了?充电5分钟,开车两小时?又一个手机厂商OPPO显示出造车的苗头。据了解,OPPO广东移动通信有限公司于今年5月份申请了OCar商标,注册在第9类科学仪器相关产品上。OCar商标由字苹果跟高通的授权费问题越闹越大了苹果跟高通之间的授权费纠纷,现在又有了新的进展。后者在月初提出反诉后,现在又发布了一份声明,其中提到苹果最近已停止向iPhone制造商支付涉及高通的授权费,因为其坚持认为自己已经为小米MIX系列又回来了,这次的版本惊喜更多,将首发液体镜头自从小米官宣了春季新品发布会后,可以说本人就一直在关注着小米的微博,就等着新品的官宣,看看小米这一次带给大家的到底是不是惊喜。可以说,再看见小米官宣小米11大杯超大杯的时候,本人就新品亮相小米MIX新体验,让普通人能买得起的折叠屏3月29日,小米召开以生生不息为主题的新品发布会。发布会上,不少新产品和黑科技首次亮相,赚足米粉们的眼球。小米自研澎湃芯片,硅氧负极电池,液态镜头以及旗舰影像等众多新科技惊艳亮相,小米新机再度来袭,有了超高性能不够,游戏体验也很能打小米一直以来的表现米粉们有目共睹,从内部配置再到核心技术,小米都是诚意满满,先前斥巨资打造土豪邀请函,而且还投入了巨额前期预算,种种迹象都表明小米始终在玩真的,没有与米粉们开玩笑。小米三星联合研发大底GN2,与小米11Pro碰撞一起会怎样3月29日,小米发布会正式举行。在这次的发布会上,让我觉得十分惊喜的就是小米与三星联合研发的GN2超大底。众所周知,现在智能手机市场真正的短板其实在影像技术。现在的智能手机虽然能够健康烹饪新味道,秘诀就在于方太油烟机灶台套装在我心里,中餐永远是味道最丰富菜式变幻最多的饮食风格,无论是以炖为主香气扑鼻的东北菜,还是以麻为主辅辣增味的激爽川菜,亦或是用料考究制作精细的粤菜,都夹杂着中国人特殊的饮食哲学和生香港证监会已收到多个关于加密货币ETF的请求加密货币总市值突破2。8万亿美元,超过微软和苹果据最新数据显示,目前加密货币总市值已突破2。8万亿美元,本文撰写时为2,855,724,225,981美元,24小时涨幅3。2,超过兰蔻x百人测评团联动出击,探索双十一品牌增量密码早在国庆的时候,就有网友在微博调侃说10月的工资随了份子,而11月的工资用来双十一,把自己安排的明明白白。实际上,双十一活动如今早已如火如荼地进行了数日,从预售到返场,不断拉长的双
李子柒的入局意味着什么?你们误会啦,李子柒一直都在更新视频,没有断更,只是大家没看到而已。他在tiktok七月份到现在更新的88条作品,每条都是爆款,跟在油管一样火。为什么李子柒独宠这个平台?因为tikt苹果AppleWatch团结之光表盘上线,推出BlackUnity编织表带IT之家1月26日消息,苹果AppleWatch上线了一款名为团结之光的表盘,灵感来自于非洲未来主义,时针和分针会发出光芒来照亮表盘,有红绿和黑白两种颜色。此外,苹果推出了与该表盘春节年货清单加入华为智能眼镜,微信红包提醒给你满满的仪式感虽说除夕才是新年的伊始,但随着腊月二十三祭灶节的到来,可以说正式带我们拉开了过年的序幕,进入了忙年。每年这个时候,家家户户就开始忙碌起来采购年货了。除了糕点糖果等传统年货,数码电子关注李永乐老师蛮久了,感觉李老师若是在基础物理方面工作,可能会有更多的成就其实从我个人的角度来看,李老师如果改行去搞基础物理研究的话,估计为科学界做出重大贡献的概率很大!李永乐老师在基础物理科普方面做了不少视频,让我受益不少,在此再次感谢李白白色控不可错过的桌面好物分享评测白YYDS俗话说,一白遮百丑。一般用来描述美人,即使有各种瑕疵,但只要肤白一般都会貌美。我发现人对颜色的喜好,会随着年纪而变化。青春时喜欢五彩斑斓,过了而立之年,就越来越喜欢白色。亚洲联网科技收购恒基地产1亿元高级无抵押债券观点网讯1月27日,亚洲联网科技有限公司公布,於本月5日及1月26日以总代价9997。6万元人民币收购面值总额约1亿元人民币的债券。该集团指,债券为恒基地产发行的高级无抵押固定利率空气净化器对改善空气质量有用吗?空气净化器如何选?哈喽大家好,我是聚灵阵主。北方的冬天室外着实寒冷,宅在家看视频啃零食才是最好的选择。但是冬天开窗通风需要勇气,而且北方冬季雾霾天也多,空气质量也不好,但是门窗紧闭空气质量又惹人担忧全球品牌20强,中美开始平分秋色,华为又争气了中国品牌前20占7家,华为进入前10!这次品牌非常体现中国和美国企业的特点。品牌估值与咨询机构BrandFinance发布了2022年全球品牌价值500强报告,中国品牌进步很快。其亚马逊纽约仓库员工获准再次举行工会选举财经网科技1月27日讯,据新浪科技报道,美国国家劳资关系委员会(NLRB)周三证实,亚马逊纽约斯塔滕岛仓库的一个工人团体已经满足了举行工会选举的条件,从而为亚马逊内部的又一次高调的罗技键鼠礼盒虎年吉祥款评测性能颜值双在线,值得入手每到新春佳节即将来临之际,都会出现一些新春定制套装出现,即便是相对冷门的数码产品也不例外,前不久笔者就收到了由罗技推出的新春键鼠套装,即罗技键鼠礼盒虎年吉祥款(MXMasster3Intel12代酷睿i9对比苹果M1Max功耗3倍差距首批搭载Intel12代酷睿i9处理器的产品已经正式跟大家见面,而外媒也是通过微星GE76的实际表现,做了跟苹果M1Max(16英寸MacBookPro)的性能对比。根据测试,搭载