栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 原生http请求 HttpURLConnection的使用 cookie的获取 和乱码的解决方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 原生http请求 HttpURLConnection的使用 cookie的获取 和乱码的解决方法

一、HttpURLConnection发送GET请求
public static void GETRequest(int page,String cookie) throws Exception {
        String url = String.format("http://www.baidu.com/user?tn=baidu&pn=%s",page);
        //创建远程url连接对象
        URL obj = new URL(url);
        //通过远程url对象打开一个连接,强制转换为HttpUrlConnection类型
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        //默认值我GET
        con.setRequestMethod("GET");
    	con.setConnectTimeout(15000);	//设置连接主机服务器超时时间:15000毫秒
    	con.setReadTimeout(60000);		//设置读取远程返回的数据时间:60000毫秒
        con.setDoInput(true);        	//设置输入流采用字节流
        con.setDoOutput(true);        	//设置输出流采用字节流
        //添加请求头
        con.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; zh-CN; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15");
        con.setRequestProperty("Host", "www.baidu.com");
//        con.setRequestProperty("Accept-Encoding","gzip, deflate");
        con.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.9");
        con.setRequestProperty("Connection", "keep-alive");
        con.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,**;q=0.8,application/signed-exchange;v=b3;q=0.9");
        con.setRequestProperty("cookie", cookie);

        OutputStream output = con.getOutputStream();
        //写入参数输出流
        output.write(param.getBytes());
        OutputStreamWriter outr = new OutputStreamWriter(output, StandardCharsets.UTF_8);
        outr.flush();
        outr.close();

        //状态码
        int responseCode = con.getResponseCode();
        System.out.println("Sending 'POST' request to URL : " + url);
        System.out.println("Response Code : " + responseCode);

        BufferedReader in = new BufferedReader(
                new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8));
        String inputLine;
        StringBuffer response = new StringBuffer();

        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        //打印结果
        System.out.println(response.toString());
    }
三、关于respond中set-cookie值的获取
  • 在HttpURLConnection中t常用两个方法获得响应中的header,getHeaderField()方法仅限于获取header中的不重复项,例如某个响应中的set-cookie有多个值,那么getHeaderField()方法仅返回最后一个set-cookie的值,那么此时我们可以使用getHeaderFields()方法,此方法返回一个Map,其包含所有的header中的数据
public String getHeaderField(String name);


public Map> getHeaderFields()
四、HttpURLConnection乱码问题 在HttpURLConnection中出现乱码的情况主要有两种,我们需要定位乱码出现在哪个位置再解决,这个问题其他博主都写过很多的解决方法,这里不再详细说明。但是我在向一个比较古老的php发送请求时,返回的html内容乱码,我在将header中的Accept-Encoding注释掉以后,返回内容奇迹般的恢复了正常,使用各种方法都不能解决响应乱码的兄弟们可以试试
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/667116.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号