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"));
}
}
分享到:
相关推荐
这些服务类提供了一系列的方法,可以直接调用Google API的各种操作,如创建、读取、更新和删除资源。例如,使用`DriveService`我们可以创建新的Google文档、上传文件到Google Drive,或者查询已有的文件。 为了简化...
**压缩包子文件名称:** "obd-java-api-1.0-sources" 这个文件名告诉我们这个压缩包包含的是OBD Java API的1.0版本的源代码,开发者可以通过这些源代码学习如何在Java环境中与OBD系统交互,实现车辆数据的读取、解析...
总之,“stax-api-1.0-2”是一个包含源代码、运行时库和Maven配置的STAX API版本,它为Java开发者提供了高效、低内存消耗的XML处理方式。无论是阅读源码以了解其实现,还是在项目中直接使用API,STAX都是XML处理领域...
DLL(Dynamic Link Library)是Windows操作系统中一种共享代码的方式,允许多个程序同时使用同一块内存空间中的代码,从而节省系统资源并提高执行效率。API-MS-Win-Core-Console-L1-1-0.dll中的函数和接口,使得...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志门面,它提供了一个简单的接口,允许开发者在不修改代码的情况下切换不同的日志实现。SLF4J的出现是为了统一各种日志框架,如Log4j、java.util.logging、...
《谷歌API Java客户端1.3.1-alpha:Android云服务开发的得力工具》 谷歌API Java客户端库是Google提供的一套强大工具,用于帮助开发者在Java环境中与各种Google服务进行交互,包括但不限于Google Cloud Platform...
标题 "Google-Drive-Java-API-Call-源码.rar" 提供的信息暗示了这是一个关于使用Java编程语言调用Google Drive API的实际代码示例。Google Drive API允许开发者与Google Drive服务进行交互,包括上传、下载、搜索、...
XposedBridgeApi是一个用于Android系统的库,它允许开发者在不修改应用程序源代码的情况下,通过使用Xposed框架来实现对应用程序的修改和增强。XposedBridgeApi-54提供了一组API,使得开发者可以在运行时动态地修改...
《axiom-api-1.2.12.jar.zip:深入理解Apache Axiom API与Java Archive(JAR)文件》 在IT行业中,理解和使用各种API是开发人员的基本技能之一。今天我们将聚焦于名为"axiom-api-1.2.12.jar.zip"的文件,这是一个...
注解处理器是Java编译器的一部分,它们会在编译期间读取源代码中的注解并执行相应的操作,比如生成额外的源代码或资源,进行类型检查等。`javax.annotation-api` 包中可能包含了一些用于处理特定注解的处理器。 6....
而JPA(Java Persistence API)是Java EE规范的一部分,为ORM提供了标准的接口。`hibernate-jpa-2.1-api-1.0.0.final.jar`是Hibernate对JPA 2.1规范的实现库,它使得开发者能够使用Hibernate的高效功能同时遵循JPA...
Java解析API(java-parser-api-1.1.3.Final.zip)是一个用于处理和解析Java源代码的工具,它提供了一种高效且易于使用的接口,允许开发者深入理解、操作和生成Java语法树。这个库通常被用在编译器、静态代码分析工具...
ImageIO是Java标准库的一部分,用于读取、写入和处理图像文件。JavaCV扩展了ImageIO的功能,添加了对更多图像格式的支持,并提供了更高级的图像处理操作。 Pocketsphinx是开源的语音识别引擎,它专为低资源环境设计...
2. **资源操作**:包括但不限于产品(Product)、订单(Order)、客户(Customer)、分类(Taxonomy)、优惠券(Coupon)等核心资源的CRUD(创建、读取、更新、删除)操作。 3. **异步处理**:库支持异步请求,可以提高应用的...
但通过CORS,服务器可以明确指定哪些源可以访问其API或资源,从而实现跨域请求。 在这个"cors-filter-2.5 + java-property-utils-1.9.1.zip"压缩包中,主要包含了两个关键组件:CORS Filter和Java Property Utils。...
本文将深入探讨Java如何操作Hadoop,以及在"Java-API-Operate-Hadoop.rar"压缩包中提供的资源。 首先,我们关注的是`HadoopFSOperations.java`文件,这通常是一个包含Java代码的文件,展示了如何使用Hadoop的文件...
JavaCV 提供了一个统一的 API,使得开发者能够在不同的平台上使用相同的代码来实现计算机视觉功能。 **OpenCV(Open Source Computer Vision Library)**: OpenCV 是一个广泛使用的计算机视觉库,包含了大量的图像...
总的来说,"ccfd-api-java-master.zip"为Java开发者提供了一个宝贵的资源,使得他们能够在Java环境中便捷地进行CFD模拟,无论是进行科研探索还是实际工程应用,都能发挥出其强大的潜力。通过不断学习和实践,开发者...
javax.imageio.event Java Image I/O API 的一个包,用于在读取和写入图像期间处理事件的同步通知。 javax.imageio.metadata 用于处理读写元数据的 Java Image I/O API 的包。 javax.imageio.plugins.bmp 包含供...
这个文件包含了JavaCV的源代码,对于开发者来说,这是一个很好的学习资源。如果需要查看或调试JavaCV的内部实现,或者对其进行扩展,这个源代码包非常有价值。 7. **集成与使用**: 在Java项目中使用JavaCV,通常...