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;    }}


原创粉丝点击