开源软件名称(OpenSource Name):kevinsawicki/http-request开源软件地址(OpenSource Url):https://github.com/kevinsawicki/http-request开源编程语言(OpenSource Language):Java 84.6%开源软件介绍(OpenSource Introduction):Http RequestA simple convenience library for using a HttpURLConnection to make requests and access the response. This library is available under the MIT License. UsageThe http-request library is available from Maven Central. <dependency>
<groupId>com.github.kevinsawicki</groupId>
<artifactId>http-request</artifactId>
<version>6.0</version>
</dependency> Not using Maven? Simply copy the HttpRequest class into your project, update the package declaration, and you are good to go. Javadocs are available here. FAQWho uses this?See here for a list of known projects using this library. Why was this written?This library was written to make HTTP requests simple and easy when using a Libraries like Apache HttpComponents are great but sometimes
for either simplicity, or perhaps for the environment you are deploying to (Android),
you just want to use a good old-fashioned Bottom line: The single goal of this library is to improve the usability of the
What are the dependencies?None. The goal of this library is to be a single class class with some inner static classes. The test project does require Jetty in order to test requests against an actual HTTP server implementation. How are exceptions managed?The Are requests asynchronous?No. The underlying Therefore it is important to not use an Here is a simple Android example of using it from an AsyncTask: private class DownloadTask extends AsyncTask<String, Long, File> {
protected File doInBackground(String... urls) {
try {
HttpRequest request = HttpRequest.get(urls[0]);
File file = null;
if (request.ok()) {
file = File.createTempFile("download", ".tmp");
request.receive(file);
publishProgress(file.length());
}
return file;
} catch (HttpRequestException exception) {
return null;
}
}
protected void onProgressUpdate(Long... progress) {
Log.d("MyApp", "Downloaded bytes: " + progress[0]);
}
protected void onPostExecute(File file) {
if (file != null)
Log.d("MyApp", "Downloaded file to: " + file.getAbsolutePath());
else
Log.d("MyApp", "Download failed");
}
}
new DownloadTask().execute("http://google.com"); ExamplesPerform a GET request and get the status of the responseint response = HttpRequest.get("http://google.com").code(); Perform a GET request and get the body of the responseString response = HttpRequest.get("http://google.com").body();
System.out.println("Response was: " + response); Print the response of a GET request to standard outHttpRequest.get("http://google.com").receive(System.out); Adding query parametersHttpRequest 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 Using arrays as query parametersint[] ids = new int[] { 22, 23 };
HttpRequest request = HttpRequest.get("http://google.com", true, "id", ids);
System.out.println(request.toString()); // GET http://google.com?id[]=22&id[]=23 Working with request/response headersString contentType = HttpRequest.get("http://google.com")
.accept("application/json") //Sets request header
.contentType(); //Gets response header
System.out.println("Response content type was " + contentType); Perform a POST request with some data and get the status of the responseint response = HttpRequest.post("http://google.com").send("name=kevin").code(); Authenticate using Basic authenticationint response = HttpRequest.get("http://google.com").basic("username", "p4ssw0rd").code(); Perform a multipart POST requestHttpRequest request = HttpRequest.post("http://google.com");
request.part("status[body]", "Making a multipart request");
request.part("status[image]", new File("/home/kevin/Pictures/ide.png"));
if (request.ok())
System.out.println("Status was updated"); Perform a POST request with form dataMap<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"); Copy body of response to a fileFile output = new File("/output/request.out");
HttpRequest.get("http://google.com").receive(output); Post contents of a fileFile input = new File("/input/data.txt");
int response = HttpRequest.post("http://google.com").send(input).code(); Using entity tags for cachingFile 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(); Using gzip compressionHttpRequest 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); Ignoring security when using HTTPSHttpRequest request = HttpRequest.get("https://google.com");
//Accept all certificates
request.trustAllCerts();
//Accept all hostnames
request.trustAllHosts(); Configuring an HTTP proxyHttpRequest request = HttpRequest.get("https://google.com");
//Configure proxy
request.useProxy("localhost", 8080);
//Optional proxy basic authentication
request.proxyBasic("username", "p4ssw0rd"); Following redirectsint code = HttpRequest.get("http://google.com").followRedirects(true).code(); Custom connection factoryLooking to use this library with OkHttp? Read here. 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);
}
}); Contributors
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论