设为首页 加入收藏

TOP

使用Java内置类HttpUrlConnection实现HTTP请求(二)
2018-03-18 16:21:48 】 浏览:496
Tags:使用 Java 内置 HttpUrlConnection 实现 HTTP 请求
nager.getCookieStore().add(null, new HttpCookie("username", "john"));
 }


 最后,将cookies添加到请求中去,我们需要在关闭连接和重新打开连接后,添加Cookie请求头 :


con.disconnect();
con = (HttpURLConnection) url.openConnection();
con.setRequestProperty("Cookie", 
StringUtils.join(cookieManager.getCookieStore().getCookies(), ";"));


  8. 处理重定向


我们可以通过调用方法setInstanceFollowRedirects(),设置为true或者false,来控制是否允许一个特定连接自动跟随重定向:


con.setInstanceFollowRedirects(false);


 也可以全局设置所有的连接是否允许自动跟随重定向:


HttpUrlConnection.setFollowRedirects(false);


 默认是允许自动跟随重定向的。


请求返回状态码301,302表示重定向,我们可以获取响应头的Location属性并用新的URL创建一个新的连接。


 if (status == HttpURLConnection.HTTP_MOVED_TEMP
  || status == HttpURLConnection.HTTP_MOVED_PERM) {
    String location = con.getHeaderField("Location");
    URL newUrl = new URL(location);
    con = (HttpURLConnection) newUrl.openConnection();
 }


9. 读取响应


通过读取HttpUrlConnection实例的InputStream流来读取响应。


读取响应常用方法有getResponseCode(), connect(), getInputStream() or getOutputStream() 。


比如,读取响应状态码:


int status = con.getResponseCode();


比如,读取响应头:


String contentType = con.getHeaderField("Content-Type");


比如,读取响应文本:


BufferedReader in = new BufferedReader(
  new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    content.append(inputLine);
}
in.close();


关闭连接:


con.disconnect();


结论


在这篇文章中,我们展示了如何通过HttpUrlConnection类来时间Http请求。以下代码可以直接拷贝使用。由于太简单,就不传github了。


package com.linuxidc.utils;


import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;


public class HttpUtil {


    private static String POST = "POST";
    private static String GET = "GET";
    private static String CONTENT_TYPE_URLENCODED = "application/x-www-form-urlencoded";
    private static String CONTENT_TYPE_JSON = "application/json";


    private static String httpRequest(String method, String contentType, String urlStr, HashMap<String,String> paras)
            throws IOException {
        URL url = new URL(urlStr);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setConnectTimeout(5000);
        con.setReadTimeout(5000);
        con.setRequestMethod("POST");
        con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");


        if(paras != null && !paras.isEmpty()){
            con.setDoOutput(true);
            DataOutputStream out = new DataOutputStream(con.getOutputStream());
            out.writeBytes(ParameterStringBuilder.getParamsString(paras));
            out.flush();
            out.close();
        }
       


      &nbs

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spring对JDBC的模板支持:JdbcTem.. 下一篇给HttpClient添加Socks代理

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目