Java 纯HTTP Get请求获取响应内容,如果302,继而获取重定向后的响应内容。

public static void main(String[] args) {
    	try {  
    		StringBuffer buffer = new StringBuffer();
    
            String url = "http://localhost:8080/istock/login?u=name&p=pass";  
            System.out.println("访问地址:" + url); 
            
            //发送get请求
            URL serverUrl = new URL(url);  
            HttpURLConnection conn = (HttpURLConnection) serverUrl.openConnection();  
            conn.setRequestMethod("GET");  
            //必须设置false,否则会自动redirect到重定向后的地址  
            conn.setInstanceFollowRedirects(false);
            conn.addRequestProperty("Accept-Charset", "UTF-8;");  
            conn.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Firefox/3.6.8");  
            conn.addRequestProperty("Referer", "http://matols.com/");  
            conn.connect();  
            
            //判定是否会进行302重定向
            if (conn.getResponseCode() == 302) { 
                //如果会重定向,保存302重定向地址,以及Cookies,然后重新发送请求(模拟请求)
                String location = conn.getHeaderField("Location");  
                String cookies = conn.getHeaderField("Set-Cookie");  
                
	            serverUrl = new URL(location);  
	            conn = (HttpURLConnection) serverUrl.openConnection();  
	            conn.setRequestMethod("GET");
	            conn.setRequestProperty("Cookie", cookies);
	            conn.addRequestProperty("Accept-Charset", "UTF-8;");  
	            conn.addRequestProperty("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Firefox/3.6.8");  
	            conn.addRequestProperty("Referer", "http://matols.com/");  
	            conn.connect();  
	            System.out.println("跳转地址:" + location); 
            }
            
            //将返回的输入流转换成字符串  
            InputStream inputStream = conn.getInputStream();  
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"utf-8");  
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
            String str = null;  
            while ((str = bufferedReader.readLine()) != null) {  
                buffer.append(str);  
            }  
            bufferedReader.close();  
            inputStreamReader.close();  
            // 释放资源  
            inputStream.close();  
            inputStream = null;  
  
            System.out.println(buffer.toString());
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }
时间: 2024-10-06 16:05:28

Java 纯HTTP Get请求获取响应内容,如果302,继而获取重定向后的响应内容。的相关文章

如何通过抓包工具fiddler获取java程序的http请求

原文:如何通过抓包工具fiddler获取java程序的http请求 源代码下载地址:http://www.zuidaima.com/share/1550463683824640.htm 抓包工具fidder是一个很轻巧的可以获取浏览器,程序的http,https请求的软件. 百科地址:http://baike.baidu.com/view/868685.htm 官网地址:http://fiddler2.com/ firefox的fidder插件 而java程序需要设置proxy才能生效: Pro

java纯数字加密解密实例

我们都知道,在用户加入信息时,一些比較敏感的信息,如身份证号,手机号,用户的登录password等信息,是不能直接明文存进数据库的.今天我们就以一个详细的样例来说明一下纯数字的java加密解密技术. 一般我们从页面获取到用户加入的信息之后,进行加密然后存入到数据库.须要比对信息时,加密之后的用户信息我们看不懂,所以相应的我们就要用解密技术.事实上软考中对加密解密技术进行了非常全面的说明,这里我们就用一个比較简单的实例来说明一下. 我们可能会习惯在service层进行加密,这个没有太强制的要求.以

Java中前台JSP请求Servlet实例(http+Servlet)

1.前台jsp代码 himily.jsp,定义了用户名和密码两个输入框,使用post方式提交:/order-web/HimilyServlet其中order-web为站点名称,HimilyServlet为servlet访问路径 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html

用java模拟发送post请求

package com.bytestream.practice.demo;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;

JMeter处理jdbc请求后的响应结果

JMeter如果进行JDBC请求,请求后的响应结果如何给下一个请求用(也就是传说中的关联),于是研究了一下,下面将学习的成果做个记录: 1.添加 "JDBC Connection Configuration"里面用来配置一些数据库连接的信息 2.添加一个“CSV Data Set Config”,用来在后续的JDBC请求中select语句中where条件参数化使用 3.添加JDBC请求 4.请求测试可以发现jdbc请求已经成果,并能在响应数据中看到返回的结果 5.那么接下来的问题就来了

AJAX 跨域请求的解决办法:使用 JSONP获取JSON数据

由于受到浏览器的限制,ajax不允许跨域通信.如果尝试从不同的域请求数据,会出现安全错误.如果能控制数据驻留的远程服务器并且每个请求都前往同一域,就可以避免这些安全错误.但是,如果仅停留在自己的服务器上,Web 应用程序还有什么用处呢?如果需要从多个第三方服务器收集数据时,又该怎么办? 理解同源策略限制 同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性.也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同.这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作.这个

java webserver-封装request请求协议

封装请求协议:获取method uri以及请求参数 public class Request { //协议信息 private String requestInfo; //请求方式 private String method; //请求的uri private String url; //请求的参数 private String queryStr; public Request(InputStream is) { byte[] datas=new byte[1024*1024]; int len

Java GET和POST请求

从表面来看GET和POST请求: GET请求是在url后直接附上请求体,url和请求体之间用"?"分割,不同参数之间用"&"分隔,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密. POST把提交的数据则放置在是HTTP包的包体中,Post没有限制提交的数据.Post比Get安全,当数据是中文或者不敏感的数据,则用get,因为使用get,参数会显

简述Java中Http/Https请求监听方法

一.工欲善其事必先利其器 做Web开发的人总免不了与Http/Https请求打交道,很多时候我们都希望能够直观的的看到我们发送的请求参数和服务器返回的响应信息,这个时候就需要借助于某些工具啦.本文将采用Fiddler2作为分析工具,Fiddler很强大,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,是越墙抓包之利器.关于工具的介绍可以参考下面的链接: http://www.cnblogs.com/TankXiao/archive/2012/02