对Java的HttpURLConnection的封装类
作者:网络转载 发布时间:[ 2013/11/20 13:46:39 ] 推荐标签:
|
import http.Http;
import java.util.*;
import java.io.*;
public class NewClass {
public static void main(String[] args) throws Exception {
String charset = "gbk";
Http http1 = new Http("http://xxxxxxx/login.php", charset);
/**
* 登录
*/
http1.addPostData("username", "username中文");
http1.addPostData("password", "password中文");
http1.execute();
/**
* 另一个访问,cookie和session你都不用管了,会自动处理,会处理包括cookie的过期时间等等。这像浏览器的两个标签页一样。
*/
Http http2 = new Http("http://xxxxxxx/xxxxxx.php", charset);
http2.addPostData("testfield", "testfieldvalue中文1");
http2.addPostData("mycheckbox[]", "testfieldvalue中文2");
http2.addPostData("mycheckbox[]", "testfieldvalue中文3");
http2.addUploadFile("fieldName", "F:\NetBeansProjects\Wrapper\src\upfile.txt"
, "rename.txt");
http2.execute();
/**
* 打印返回的结果出来
*/
//状况
System.out.println("-------response header-------");
Map<String, List<String>> headersMap = http2.getHeaders();
for (Map.Entry<String, List<String>> entry : headersMap.entrySet()) {
String string = entry.getKey();
List<String> list = entry.getValue();
System.out.println(string + ": " + list.get(0));
}
//内容
//压缩的
if (http2.getHeader("Content-Encoding") != null) {
System.out.println("-------response content 压缩的,格式为" + http2.getHeader("Content-Encoding"));
//使用http2.getInputStream()得到二进制流,做其它处理,解压缩、保存到文件等等。
return;
}
//非压缩的
System.out.println("-------response content-------");
InputStreamReader isr = new InputStreamReader(http2.getInputStream(), charset);
StringBuilder stringBuilder = new StringBuilder();
int len;
char[] cbuf = new char[1024];
while ((len = isr.read(cbuf)) >= 0) {
if (len == 1024) {
stringBuilder.append(cbuf);
} else {
stringBuilder.append(cbuf, 0, len);
}
}
System.out.println(stringBuilder.toString());
}
}
|
附注:
为什么没有直接返回页面文本而是通过getInputStream()方法返回一个输入流呢?
原因一,有些网站会不定次地发送压缩格式的body,例如百度。本类不予解压缩,因为本类只负责抓取而不负责对文档进行解析,压缩类型(gzip等)不确定,返回的文档也不一定是什么文档。可根据getHeader("Content-Encoding")的值判断压缩情况。
原因二,java中都是对流进行操作,这是个标准的、默认的接口。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
Java性能测试有哪些不为众人所知的原则?Java设计模式??装饰者模式谈谈Java中遍历Map的几种方法Java Web入门必知你需要理解的Java反射机制知识总结编写更好的Java单元测试的7个技巧编程常用的几种时间戳转换(java .net 数据库)适合Java开发者学习的Python入门教程Java webdriver如何获取浏览器新窗口中的元素?Java重写与重载(区别与用途)Java变量的分类与初始化JavaScript有这几种测试分类Java有哪四个核心技术?给 Java开发者的10个大数据工具和框架Java中几个常用设计模式汇总java生态圈常用技术框架、开源中间件,系统架构及经典案例等

sales@spasvo.com