`
zhyt710
  • 浏览: 202723 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java api--http资源读取代码片

阅读更多
package tutorial;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;

/**
 * http读取器
 * @author zhangyt
 */
public class HttpReader {
	public static void main(String[] args) throws Exception {
		URL url = new URL("http://www.126.com");
		InputStream in = url.openStream();
		
		//字节读取
		byte[] b = new byte[256];
		int n = -1;
		while ((n = in.read(b)) != -1) {
			//可以指定编码类型
			//String str = new String(b, 0, n, "gbk");
			String str = new String(b, 0, n);
			System.out.print(str);
		}
		
		//按行读取
		//可以指定编码类型
		//InputStreamReader bin = new InputStreamReader(in, "gbk");
		InputStreamReader bin = new InputStreamReader(in);
		BufferedReader br = new BufferedReader(bin);
		String str = null;
		while ((str = br.readLine()) != null) {
			System.out.println(str);
		}
	}
}

以上是以get方式请求读取资源的代码片

 

下面是以post方式请求读取资源的代码片

package tutorial;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

/**
 * 以post方式请求读取http资源
 * @author zhangyt
 */
public class HttpReaderPost {
	public static void main(String[] args) throws Exception {

		//设定参数
		String data = URLEncoder.encode("key1", "UTF-8") + "="
				+ URLEncoder.encode("汉字了", "UTF-8");

		// 发出post请求
		URL realUrl = new URL("http://localhost:8080/webtest/ShowParmeters");
		URLConnection conn = realUrl.openConnection();
		conn.setDoOutput(true);
		OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
		//写参数到请求正文
		wr.write(data);
		wr.flush();

		//返回的连接是基于http的连接,因为我们请求字符串开头是http
		//这里进行转化是为了得到服务端返回代码
		HttpURLConnection httpConn = (HttpURLConnection) conn;
		
		//得到相关信息
		//得到状态代码, 只有当 ResponseCode 为 2 开头的代码的时候, 才去处理我们想要的
		//否则可以重新请求或者跳过,或者记录请求失败日志
		System.out.println(httpConn.getResponseCode());
		//得到返回类型
		System.out.println(conn.getContentType());
		//得到内容长度
		System.out.println(conn.getContentLength());
		//打印一个空行
		System.out.println();
		
		// 得到正文结果,并输出到控制台
		BufferedReader rd = new BufferedReader(new InputStreamReader(conn
				.getInputStream(), "utf-8"));
		String line;
		while ((line = rd.readLine()) != null) {
			//做你想做的事情在这里
			System.out.println(line);
		}

		//关闭读写流
		wr.close();
		rd.close();
	}
}

 

 

 网站经常会设置自动跳转。那么java客户端怎样得到跳转恢复代码呢。 直接用httpConn.getResponseCode()时不行的。这就需要我们设置httpConn.setInstanceFollowRedirects(false); 然后httpConn.getHeaderField("Location")得到将要跳转的页面url。例子如下

import java.net.HttpURLConnection;
import java.net.URL;

public class HttpReader {

	public static void main(String[] args) throws Exception {
		URL url = new URL("http://localhost:8080/webtest/LookRedirect");
		
		HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
		httpConn.setInstanceFollowRedirects(false);
		System.out.println(httpConn.getResponseCode());
		System.out.println(httpConn.getHeaderField("Location"));
        
	}
}

 

 

 

 

 

分享到:
评论

相关推荐

    XposedBridgeAPI-82.jar

    XposedBridgeApi是一个用于Android系统的库,它允许开发者在不修改应用程序源代码的情况下,通过使用Xposed框架来实现对应用程序的修改和增强。XposedBridgeApi-54提供了一组API,使得开发者可以在运行时动态地修改...

    XposedBridgeAPI-89.jar

    XposedBridgeApi是一个用于Android系统的库,它允许开发者在不修改应用程序源代码的情况下,通过使用Xposed框架来实现对应用程序的修改和增强。XposedBridgeApi-54提供了一组API,使得开发者可以在运行时动态地修改...

    JAVA_API1.6文档(中文)

    javax.imageio.event Java Image I/O API 的一个包,用于在读取和写入图像期间处理事件的同步通知。 javax.imageio.metadata 用于处理读写元数据的 Java Image I/O API 的包。 javax.imageio.plugins.bmp 包含供...

    Java 1.6 API 中文 New

    javax.imageio.event Java Image I/O API 的一个包,用于在读取和写入图像期间处理事件的同步通知。 javax.imageio.metadata 用于处理读写元数据的 Java Image I/O API 的包。 javax.imageio.plugins.bmp 包含供内置...

    JavaAPI1.6中文chm文档 part1

    javax.imageio.event Java Image I/O API 的一个包,用于在读取和写入图像期间处理事件的同步通知。 javax.imageio.metadata 用于处理读写元数据的 Java Image I/O API 的包。 javax.imageio.plugins.bmp 包含供...

    java api最新7.0

    javax.imageio.event Java Image I/O API 的一个包,用于在读取和写入图像期间处理事件的同步通知。 javax.imageio.metadata 用于处理读写元数据的 Java Image I/O API 的包。 javax.imageio.plugins.bmp 包含供内置...

    金蝶K3星空云获取报表查询 WEB API(成本计算单报表查询) JAVA版.rar

    1. 基于金蝶K3星空云 Java Sdk 为例的报表查询WEB API接口。 2. 本例提供了基本的参考示例,JAVA小伙伴很容易看懂。 3. 本例提供了核心代码类,不是全套,为金蝶K3web api 开发的小伙伴提供基本思路。 4. 本例包括...

    JavaAPI中文chm文档 part2

    javax.imageio.event Java Image I/O API 的一个包,用于在读取和写入图像期间处理事件的同步通知。 javax.imageio.metadata 用于处理读写元数据的 Java Image I/O API 的包。 javax.imageio.plugins.bmp 包含供...

    java-servlet-api.doc

    Java Servlet API说明文档 绪言 这是一份关于2.1版JavaServletAPI的说明文档,作为对这本文档的补充,你可以到http://java.sun.com/products/servlet/index.html下面下载Javadoc格式的文档。 谁需要读这份文档 这份...

    JAVA上百实例源码以及开源项目

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    abiquo-api-outbound-java-client:一个Java客户端,用于连接和使用Abiquo API出站功能

    目前,我们提供了以下语言的示例代码Java客户和第三方软件提供商可以自由使用和修改此代码。 我们将根据市场的需求开发更多的插件。 需要帮助开发自己的插件或希望我们研究特定第三方产品的插件开发的客户应联系...

    JAVA上百实例源码以及开源项目源代码

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    Java开发技术大全(500个源代码).

    readDataThread.java 读取数据的线程类 demoEnhanceThread.java 使用自己定义的线程类示例 producer_consumer.java 演示生产者-消费者线程 consumer.java 消费者线程 producer.java 生产者线程 common.java ...

    java开源包10

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

    Java资源包01

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

    java开源包1

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

    java课程大作业基于SpringBoot 的多关键词检索 API项目源代码

    使用 SpringBoot 处理搜索请求,通过读取 API 关系数据分别建立加权图(权重为两 API 同时调用的频率的倒数)和无权图,并通过一定方式根据前端输入的多个关键词检索 API,最后通过前端页面展示出来。 运行程序 ...

    java开源包8

    J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用...

Global site tag (gtag.js) - Google Analytics