HttpClient -- HTTP工具
来源:互联网 发布:亚麻籽油 知乎 编辑:程序博客网 时间:2024/05/22 17:23
package com.http.demo;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.io.Reader;import java.net.HttpURLConnection;import java.net.ProtocolException;import java.net.URL;import java.util.HashMap;import java.util.Map;/** * http://www.cnblogs.com/not-NULL/p/5531866.html * http://www.cnblogs.com/loveyakamoz/archive/2011/07/21/2113252.html * HTTP工具 */public class HttpUtil { /** * 请求类型: GET */ public final static String GET = "GET"; /** * 请求类型: POST */ public final static String POST = "POST"; /** * HttpURLConnection方式 模拟Http Get请求 * @param urlStr请求路径 * @param paramMap 请求参数 */ public static String get(String urlStr, Map<String, String> paramMap) throws Exception { urlStr = urlStr + "?" + getParamString(paramMap); HttpURLConnection conn = null; try { //创建URL对象 URL url = new URL(urlStr); //获取URL连接 conn = (HttpURLConnection) url.openConnection(); //设置通用的请求属性 setHttpUrlConnection(conn, GET); //建立实际的连接 conn.connect(); //获取响应的内容 return readResponseContent(conn.getInputStream()); } finally { if (null != conn) conn.disconnect(); } } /** * HttpURLConnection方式 模拟Http Post请求 * @param urlStr请求路径 * @param paramMap请求参数 * @return */ public static String post(String urlStr, Map<String, String> paramMap) throws Exception { HttpURLConnection conn = null; PrintWriter writer = null; try { //创建URL对象 URL url = new URL(urlStr); //获取请求参数 String param = getParamString(paramMap); //获取URL连接 conn = (HttpURLConnection) url.openConnection(); //设置通用请求属性 setHttpUrlConnection(conn, POST); //建立实际的连接 conn.connect(); //将请求参数写入请求字符流中 writer = new PrintWriter(conn.getOutputStream()); writer.print(param); writer.flush(); //读取响应的内容 return readResponseContent(conn.getInputStream()); } finally { if (null != conn) conn.disconnect(); if (null != writer) writer.close(); } } /** * 读取响应字节流并将之转为字符串 * @param in要读取的字节流 */ private static String readResponseContent(InputStream in) throws IOException { Reader reader = null; StringBuilder content = new StringBuilder(); try { reader = new InputStreamReader(in); char[] buffer = new char[1024]; int head = 0; while ((head = reader.read(buffer)) > 0) { content.append(new String(buffer, 0, head)); } return content.toString(); } finally { if (null != in) in.close(); if (null != reader) reader.close(); } } /** * 设置Http连接属性 * @param connhttp连接 * @return * @throws ProtocolException * @throws Exception */ private static void setHttpUrlConnection(HttpURLConnection conn, String requestMethod) throws ProtocolException { conn.setRequestMethod(requestMethod); conn.setRequestProperty("content-encoding", "utf8"); conn.setRequestProperty("accept", "application/json"); conn.setRequestProperty("Accept-Charset", "UTF-8"); conn.setRequestProperty("Accept-Language", "zh-CN"); conn.setRequestProperty("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"); conn.setRequestProperty("Proxy-Connection", "Keep-Alive"); System.out.println(conn.getRequestMethod()); if (null != requestMethod && POST.equals(requestMethod)) { conn.setDoOutput(true); conn.setDoInput(true); } } /** * 将参数转为路径字符串 * @param paramMap 参数 */ private static String getParamString(Map<String, String> paramMap) { if (null == paramMap || paramMap.isEmpty()) { return ""; } StringBuilder builder = new StringBuilder(); for (String key : paramMap.keySet()) { builder.append("&").append(key).append("=").append(paramMap.get(key)); } return new String(builder.deleteCharAt(0).toString()); } public static void main(String[] args) { String url = "http:www.baidu.com"; Map<String, String> params = new HashMap<>(); /*params.put("name", "jerry"); params.put("age", "18"); params.put("sex", "man");*/ try { //System.out.println(post(url, params)); System.out.println(get(url,null)); } catch (Exception e) { e.printStackTrace(); }}}
/** jar包依赖:
<!-- httpclient --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.3</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.3</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.3</version></dependency><dependency><groupId>org.apache.geronimo.bundles</groupId><artifactId>commons-httpclient</artifactId><version>3.1_2</version></dependency>
*/
阅读全文
0 0
- HttpClient -- HTTP工具
- HttpClient (HTTP 请求工具类)
- Http协议客户端工具之Httpclient
- httpclient 4.5.1---http工具类
- 基于HttpClient实现Http访问工具类
- httpclient结合http报文查看工具的一个实例
- apache httpclient 客户端HTTP抓取网页内容工具
- httpClient 用于发送HTTP请求的工具类
- httpClient 用于发送HTTP请求的工具类
- Java工具类--通过HttpClient发送http请求
- 网络编程HttpClient----实现Http访问工具类
- 商城项目实战29:Httpclient封装的Http工具
- HttpClient工具
- 轻松把玩HttpClient之封装HttpClient工具类(八),优化启用Http连接池策略
- HttpClient触发HTTP请求
- httpclient http连接池
- http httpclient使用
- java http httpclient
- Godfather (树形dp + 树的重心)
- Effective Java:善于使用枚举(enum)和注解(annotation)
- border-style: none和border-style:hidden的区别
- js 跨域请求jsonp
- 关于移动端触屏输入控制的API的使用汇总(三)_Unity Android手机触屏事件
- HttpClient -- HTTP工具
- 边缘博客_HTML出错集合及解决方案
- Requests 请求报错 [SSL: SSL_NEGATIVE_LENGTH] dh key too small
- mysql 自定义函数
- 监控,zabbix
- TensorFlow实战5:利用卷积神经网络对图像分类(初阶:MNIST手写数字)代码实现
- SpringBoot打jar包并且引用部分本地工程的lib库
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
- [leetcode] 22. Generate Parentheses