使用HttpClient远程抓取网页内容

来源:互联网 发布:java记住密码怎么实现 编辑:程序博客网 时间:2024/04/26 08:54
准备工作

需要下载两个jar包:commons-httpclient和commons-codes

commons-httpclient下载地址:http://hc.apache.org/downloads.cgi 

commons-codes下载地址:http://commons.apache.org/downloads/download_codec.cgi

 

Demo:

 


import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class QuickStart {

    publicstatic void main(String[] args) throws Exception {
       DefaultHttpClient httpclient = new DefaultHttpClient();
       HttpGet httpGet = new HttpGet("http:/");

       HttpResponse response1 = httpclient.execute(httpGet);

       // The underlying HTTP connection is still held by the responseobject
       // to allow the response content to be streamed directly from thenetwork socket.
       // In order to ensure correct deallocation of systemresources
       // the user MUST either fully consume the responsecontent  or abort request
       // execution by calling HttpGet#releaseConnection().

       try {
           System.out.println(response1.getStatusLine());
           HttpEntity entity1 = response1.getEntity();
           
           System.out.println(entity1.getContentLength());
           
           OutputStream os = new FileOutputStream("c:\\a.html");
           entity1.writeTo(os);
        
           // do something useful with the response body
           // and ensure it is fully consumed
           EntityUtils.consume(entity1);
       } finally {
           httpGet.releaseConnection();
       }

       
       
       HttpPost httpPost = new HttpPost("http://****");
       List <NameValuePair> nvps = newArrayList <NameValuePair>();
       nvps.add(new BasicNameValuePair("username", "vip"));
       nvps.add(new BasicNameValuePair("password", "secret"));
       httpPost.setEntity(new UrlEncodedFormEntity(nvps));
       HttpResponse response2 = httpclient.execute(httpPost);

       try {
           System.out.println(response2.getStatusLine());
           HttpEntity entity2 = response2.getEntity();
           
           // do something useful with the response body
           // and ensure it is fully consumed
           EntityUtils.consume(entity2);
       } finally {
           httpPost.releaseConnection();
       }
    }

}
详情请看下载jar包中的demo示例。

0 0
原创粉丝点击