最简单的java http client api
Posted On 2013年7月8日
你还在使用apache http client, 倒也没什么. 但你肯定也很纠结, 功能虽太强大,但使用起来并不简单.
快来试用一下 Java HTTP Request Library https://github.com/kevinsawicki/http-request
这个库的目的是为了让我们编写http请求的时候, 和使用httpurlconnection 一样. 但功能却不弱.
Apache HttpComponents 使用起来还是相对复杂一些, 比如在android中, 如果使用 java http request library , 那么实在是太便捷了.
一些例子: 如果你觉得好, 那么就可以尝试下来替代apache httpcomponents .
执行get请求,并获得返回code(例如是200,还是400)
int response = HttpRequest.get("http://google.com").code();
执行get请求,并获得返回得body体.
String response = HttpRequest.get("http://google.com").body(); System.out.println("Response was: " + response);
打印get请求到控制台上
HttpRequest.get("http://google.com").receive(System.out);
添加get请求, get请求为( getrequest?parameter=value¶meter2=value)
HttpRequest request = HttpRequest.get("http://google.com", true, 'q', "baseball gloves", "size", 100); System.out.println(request.toString()); // GET http://google.com?q=baseball%20gloves&size=100
request/reponse 头的处理
String contentType = HttpRequest.get("http://google.com") .accept("application/json") //Sets request header .contentType(); //Gets response header System.out.println("Response content type was " + contentType);
post请求
int response = HttpRequest.post("http://google.com").send("name=kevin").code();
基本认证
int response = HttpRequest.get("http://google.com").basic("username", "p4ssw0rd").code();
执行multipast post 操作 (官网上的有问题,请注意标红色地方,需要加上该参数)
HttpRequest request = HttpRequest.post("http://google.com");
request.part("status[body]", "Making a multipart request");
request.part("status[image]", "ide.png", new File("/home/kevin/Pictures/ide.png"));
if (request.ok())
System.out.println("Status was updated");
执行post请求, post的内容为form表单
Map<String, String> data = new HashMap<String, String>(); data.put("user", "A User"); data.put("state", "CA"); if (HttpRequest.post("http://google.com").form(data).created()) System.out.println("User was created");
将请求的返回的body 保存到一个文件
File output = new File("/output/request.out"); HttpRequest.get("http://google.com").receive(output);
post的请求的body为一个文件内容
File input = new File("/input/data.txt"); int response = HttpRequest.post("http://google.com").send(input).code();
实体标签为缓存
File latest = new File("/data/cache.json"); HttpRequest request = HttpRequest.get("http://google.com"); //Copy response to file request.receive(latest); //Store eTag of response String eTag = request.eTag(); //Later on check if changes exist boolean unchanged = HttpRequest.get("http://google.com") .ifNoneMatch(eTag) .notModified();
使用gzip
HttpRequest request = HttpRequest.get("http://google.com"); //Tell server to gzip response and automatically uncompress request.acceptGzipEncoding().uncompress(true); String uncompressed = request.body(); System.out.println("Uncompressed response is: " + uncompressed);
当试用https时
HttpRequest request = HttpRequest.get("https://google.com"); //Accept all certificates request.trustAllCerts(); //Accept all hostnames request.trustAllHosts();
配置http代理
HttpRequest request = HttpRequest.get("https://google.com"); //Configure proxy request.useProxy("localhost", 8080); //Optional proxy basic authentication request.proxyBasic("username", "p4ssw0rd");
允许重定向
int code = HttpRequest.get("http://google.com").followRedirects(true).code();
自定义http工厂
HttpRequest.setConnectionFactory(new ConnectionFactory() { public HttpURLConnection create(URL url) throws IOException { if (!"https".equals(url.getProtocol())) throw new IOException("Only secure requests are allowed"); return (HttpURLConnection) url.openConnection(); } public HttpURLConnection create(URL url, Proxy proxy) throws IOException { if (!"https".equals(url.getProtocol())) throw new IOException("Only secure requests are allowed"); return (HttpURLConnection) url.openConnection(proxy); } });
此篇文章已被阅读5014 次