Java发送get,post请求
来源:互联网 发布:巴黎住宿攻略 知乎 编辑:程序博客网 时间:2024/05/17 04:02
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.Map.Entry;import org.apache.http.HttpEntity;import org.apache.http.NameValuePair;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpPost;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;public class HttpRequestUtils {/** * 发送post请求 * @param url 请求路径 * @param headers 请求参数(需封装成Map<String, String>, 无参数为null) * @return */public static String executePost(String url, Map<String, String> headers) {String body = "";// 创建httpclient对象CloseableHttpClient closeableHttpClient = HttpClients.createDefault();// 创建post方式请求对象HttpPost httpPost = new HttpPost(url);// 超时设置RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();httpPost.setConfig(requestConfig);// 装填参数List<NameValuePair> nvps = new ArrayList<NameValuePair>();if (headers != null) {for (Entry<String, String> entry : headers.entrySet()) {nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));}}CloseableHttpResponse httpResponse = null;try {// 设置参数到请求对象中httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));// 设置header信息// 指定报文头httpPost.setHeader("x-access-token", "52D9C7AE-626F-405C-AB4C-8762E7C32184");// 执行请求操作,并拿到结果(同步阻塞)httpResponse = closeableHttpClient.execute(httpPost);// 获取结果实体HttpEntity entity = httpResponse.getEntity();if (entity != null) {// 按指定编码转换结果实体为String类型body = EntityUtils.toString(entity, "utf-8");}EntityUtils.consume(entity);} catch (IOException e) {e.printStackTrace();} finally {try {httpResponse.close();} catch (IOException e) {e.printStackTrace();}}try {closeableHttpClient.close(); // 关闭连接、释放资源} catch (IOException e) {e.printStackTrace();}return body;}/** * 发送get请求 * @param url 请求路径 * @param param 请求参数 * @return */public static String sendGet(String url, String param) {String urlName = url + "?" + param;return sendGet(urlName);}/** * 发送get请求 * @param url 请求路径 * @return */public static String sendGet(String url) { String result = ""; BufferedReader in = null; try { URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection connection = realUrl.openConnection(); // 设置通用的请求属性 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 建立实际的连接 connection.connect(); // 获取所有响应头字段 Map<String, List<String>> map = connection.getHeaderFields(); // 遍历所有的响应头字段 for (String key : map.keySet()) { System.out.println(key + "--->" + map.get(key)); } // 定义 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader( connection.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输入流 finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } return result; }}
阅读全文
0 0
- Java发送Get/Post请求
- Java发送GET,POST请求
- JAVA发送POST+GET请求
- java发送get/post请求
- Java 发送 get, post 请求
- JAVA 发送 POST、GET请求
- Java发送get,post请求
- java发送GET、POST请求
- Java 发送get post请求
- JAVA 发送 POST、GET请求
- JAVA 发送Http请求,GET、POST请求
- java发送HTTP GET POST请求
- 使用Java发送GET、POST请求
- 使用Java发送POST、GET请求【转】
- 使用Java发送POST、GET请求
- java 发送get和post请求
- 使用Java发送GET、POST请求
- java httpclient发送post get 请求
- swift3.0 入门学习笔记之二 闭包
- 执行django-admin.py startproject test后,无法创建项目的解决办法
- 使用IntellJ idea以maven作为项目构建的方式创建java工程
- 认识JSON
- 通讯录小案例
- Java发送get,post请求
- QT QML自定义等待提示框
- Jmeter运行报警告信息
- Linux 安装 Eclipse
- lambda函数
- 从mysql中将数据表复制给hbase
- OSG学习:计算纹理坐标
- 算法2:树的带权路径长度(创新工场)
- vuex学习六----actions