版本: HttpURLConnection jdk1.6;HttpClient 3.0.1
在项目中有一个特别小的相关应用,在选择时做了一下测试,之前先对两个类进行下说明:
HttpURLConnection java的标准类(java.net)
HttpClient Jakarta Commons HttpClient,提供对HTTP协议访问的封装,包括http的请求头,参数,内容体,响应等及多线程的应用。
测试代码:
Java代码
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.net.HttpURLConnection;
- import java.net.MalformedURLException;
- import java.net.URL;
-
- import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
- import org.apache.commons.httpclient.HttpClient;
- import org.apache.commons.httpclient.HttpException;
- import org.apache.commons.httpclient.HttpStatus;
- import org.apache.commons.httpclient.methods.GetMethod;
- import org.apache.commons.httpclient.params.HttpMethodParams;
-
- public class HttpClientTest {
-
- private static String link = "http://www.baidu.com";
-
- public static void main(String[] args) {
- long a = System.currentTimeMillis();
- useHttpURlConnection();
- long b = System.currentTimeMillis();
- System.out.println("use httpurlconnection: "+(b-a));
- long c = System.currentTimeMillis();
- useHttpClient();
- long d = System.currentTimeMillis();
- System.out.println("use httpclient: "+(d-c));
- }
-
- public static void useHttpURlConnection(){
- HttpURLConnection conn = null;
- URL url = null;
- String result = "";
- try {
- url = new java.net.URL(link);
- conn = (HttpURLConnection) url.openConnection();
- conn.setConnectTimeout(10000);
- conn.connect();
-
- InputStream urlStream = conn.getInputStream();
- BufferedReader reader = new BufferedReader(new InputStreamReader(urlStream));
- String s = "";
- while ((s = reader.readLine()) != null) {
- result += s;
- }
- System.out.println(result);
- reader.close();
- urlStream.close();
- conn.disconnect();
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch(Exception e){
- e.printStackTrace();
- }
- }
-
- public static void useHttpClient(){
- HttpClient client = new HttpClient();
- GetMethod method = new GetMethod(link);
- method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
- new DefaultHttpMethodRetryHandler(3, false));
- try {
- int statusCode = client.executeMethod(method);
-
- if (statusCode != HttpStatus.SC_OK) {
- System.err.println("Method failed: " + method.getStatusLine());
- }
- byte[] responseBody = method.getResponseBody();
- System.out.println(new String(responseBody));
- } catch (HttpException e) {
- System.err.println("Fatal protocol violation: " + e.getMessage());
- e.printStackTrace();
- } catch (IOException e) {
- System.err.println("Fatal transport error: " + e.getMessage());
- e.printStackTrace();
- } finally {
- method.releaseConnection();
- }
- }
- }
测试结果:
use httpurlconnection: 47
use httpclient: 641
结果很明显示,但是在实际应用中,还是应该根据实际的需求进行取舍。
相关文章: