HTTPClient相关问题
1. 什么是httpClient?
HTTP客户端是Apache Jakarta Common下的子项目,提供支持高效、最新功能丰富的HTTP协议的客户端编程工具包,是HTTP协议的最新条
2. 什么是HttpClient不能做的?
http客户端不是浏览器,而是客户端的http协议传输类库。Http客户端用于发送和接收Http消息。
http客户端处理http消息的内容,不进行javascript分析,不关心content type,如果没有明确设置,http客户端就会格式化请求,重定向url,或者将其
http消息传输相关功能。
3. HttpClient有哪些特性?
实现所有HTTP的方法(获取、开机自检、推送、头部等) )。支持自动转向
支持HTTPS协议
代理服务器等的支持
4. HttpClient怎样发送带参数的GET请求?
依赖关系的部署从属关系
组org.Apache.http组件/组
artifactIdhttpcore/artifactId标识
版本4.4.6 /版本
/从属关系
从属关系
组org.Apache.http组件/组
artifactidhttpclient/artifact id
版本4.5.3 /版本
/从属关系
简单的get和开机自检请求
publicstaticvoidmain (字符串[ ]数组) throws执行{ }。
特里
//这是百度的文章
string URL=' https://MBD.Baidu.com/Newspage /数据/landing super? 上下文={ " NID ":" news _ 15984470154821203735 " } n _ type=0p _从=1';
//使用缺省配置创建http客户端实例
closeablehttpclientclient=http clients.create默认(;
//http后期后期=新http后期(URL;
http获取=新http获取(URL;
//closeablehttpresponseresponse=client.execute (开机自检;
closeablehttpresponseresponse=client.execute (获取;
//服务器返回代码
system.out.println (应答.获取状态线() .字符串);
system.out.println (响应.获取状态代码() .获取状态代码);
system.out.println (应答.获取状态线() .获取状态线);
//服务器返回内容
字符串重构str=空值;
htpentityentity=response.get entity (;
实体!=空值) {
resp str=entity utils.tostring (entity,' UTF-8 ' );
}
system.out.println (' resp str=' resp str );
//释放资源
实体用户委员会(实体);
缓存(执行) {
e .打印堆栈跟踪(;
}
}
5. HttpClient怎样发送带参数的POST请求?
公共事业域名(字符串[ ]数组)。特里
字符串URL=' http://本地主机:9090 '; //使用缺省配置创建http客户端的实例closeablehttpclient客户端=http客户端. createdefault (; http后期后期=新http后期(URL; /**设定参数。 常用的是StringEntity,UrlEncodedFormEntity,MultipartEntity *具体看org.apache.http.entity软件包*/
ListNameVa
luePair> params = new ArrayList<>(); params.add(new BasicNameValuePair("username", "洁净的路灯")); params.add(new BasicNameValuePair("password", "123456")); UrlEncodedFormEntity e = new UrlEncodedFormEntity(params, "UTF-8"); post.setEntity(e); CloseableHttpResponse response = client.execute(post); // 服务器返回码 int status_code = response.getStatusLine().getStatusCode(); System.out.println(status_code); // 服务器返回内容 String respStr = null; HttpEntity entity = response.getEntity(); if(entity != null) { respStr = EntityUtils.toString(entity, "UTF-8"); } System.out.println("respStr = " + respStr); // 释放资源 EntityUtils.consume(entity); } catch (Exception e) { e.printStackTrace(); } }6. HttpClient怎样获取响应状态?
int StatusCode = httpResponse.getStatusLine().getStatusCode();7. HttpClient怎样获取响应内容?
HttpEntity httpEntity = response.getEntity(); if (httpEntity != null) { System.out.println("长度:t" + httpEntity.getContentLength()); System.out.println("内容:t" + EntityUtils.toString(httpEntity,"UTF-8")); }8. HttpClient怎样上传文件?
String uploadUrl = "http://localhost:9102/upload.do"; HttpPost httpPost = new HttpPost(uploadUrl); FileBody fileBody = new FileBody(new File("C:/Users/Administrator/Desktop/timg.jpg")); MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create(); multipartEntityBuilder.addPart("file",fileBody); // 设置其他参数 List<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new NameValuePair("Accept","application/json, text/plain, */*")); nvps.add(new NameValuePair("Accept-Encoding","gzip, deflate, br")); nvps.add(new NameValuePair("Accept-Language","zh-CN,zh;q=0.9")); nvps.add(new NameValuePair("Connection","keep-alive")); nvps.add(new NameValuePair("Content-Length","28700")); nvps.add(new NameValuePair("Content-Type","multipart/form-data; boundary=----WebKitFormBoundarypaEfQmIQBbUrkI0c")); nvps.add(new NameValuePair("Host","localhost:9102")); nvps.add(new NameValuePair("Origin","http://localhost:9102")); nvps.add(new NameValuePair("Referer","http://localhost:9102/admin/goods_edit.html")); nvps.add(new NameValuePair("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36")); HttpEntity reqEntity = multipartEntityBuilder.build(); httpPost.setEntity(reqEntity); CloseableHttpResponse response = httpClient.execute(httpPost);来自:《Java网络编程面试题》
出版单位:北京尚学堂优效学院
优效学院由清华大学著名的IT教育领导者爱笑的盼望老师创办,是一家线上线下相互融合的互联网+培训机构。公司均由bldqc和国内行业ygdbg人士担任授课讲师,主要成员均硕士且拥有十多年的行业经验。毕业学生就职于国内BAT以及海外著名公司。优效学院,名师执教,高效学习,成就未来。
著:ssdkl
优效学院_ssdkl老师
11年工作经验 曾就职联众游戏(程序员)、众信旅游(Team Leader)、精智教育(联合创始人)、中国石化(大数据高级顾问) 精通javaEE体系、互联网产品架构,熟悉Sap Bw/HANA、多个大数据项目经验。
20180926版