zoukankan      html  css  js  c++  java
  • httpClient Post例子,Http 四种请求访问代码 HttpGet HttpPost HttpPut HttpDelete

    httpclient post方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    //----1、
    HttpPost request = new HttpPost(url);
    // 先封装一个 JSON 对象
    JSONObject param = new JSONObject();
    param.put("name""rarnu");
    param.put("password""123456");
    // 绑定到请求 Entry
    StringEntity se = new StringEntity(param.toString());
    request.setEntity(se);
    // 发送请求
    HttpResponse httpResponse = new DefaultHttpClient().execute(request);
    // 得到应答的字符串,这也是一个 JSON 格式保存的数据
    String retSrc = EntityUtils.toString(httpResponse.getEntity());
    // 生成 JSON 对象
    JSONObject result = new JSONObject( retSrc);
    String token = result.get("token");
    Http 四种请求访问代码 HttpGet HttpPost HttpPut HttpDelete
    逻辑:
    
    String url = "http://www.baidu.com";
    
    //将要访问的url字符串放入HttpPost中
    
    HttpPost httpPost = new HttpPost(url);
    
    //请求头 放置一些修改http请求头和cookie
    
    httpPost.setHeader("Accept", "application/json");
    
    ......
    
    //如果是HttpPost或者HttpPut请求需要在请求里加参数,而HttpGet或者HttpDelete请求则可以直接拼接到url字符串后面
    
    //向HttpPost中加入参数
    
    List<NameValuePair> values = new ArrayList<NameValuePair>();
    
    values.add(new NameValuePair("id", "1"));
    
    values.add(new NameValuePair("name", "xiaohong"));
    
    httpPost.setEntity(new UrlEncodeFormEntity(values, HTTP.UTF_8));  //进行转码
    
     
    
    //实例HttpClient 并执行带有HttpPost的方法,返回HttpResponse 响应,再进行操作
    
    HttpClient httpClient = new DefaultHttpClient();
    
    HttpResponse httpResponse = httpClient.execute(httpPost);
    
    int statusCode = httpResponse.getStatusLine().getStatusCode();  //返回状态码 ,用来进行识别或者判断访问结果
    
    if(statusCode == 200){
    
      Instream in = httpResponse.getEntity().getContent();  //要处理该数据流是否为GZIP流
    
    }
    
     
    
     
    
    示例代码如下:
    
    package cn.dratek.haoyingsheng.manager.client;
    
    import cn.dratek.haoyingsheng.manager.util.ResourceUtil;
    import net.dratek.browser.http.Cookie;
    import net.dratek.browser.http.CookieManager;
    import net.dratek.browser.http.URL;
    import org.apache.http.*;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpDelete;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.client.methods.HttpPut;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.protocol.HTTP;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.UnsupportedEncodingException;
    import java.util.List;
    
    
    public class HttpNetClient {
    /**
    * 所有get 请求底层调用方法
    *
    * @param url 请求url
    * @return byte[] response data
    */
    public static byte[] doGet(String url) {
    InputStream in;
    byte[] bre = null;
    HttpResponse response;
    CookieManager manager = CookieManager.getInstance();
    if (url != null && url.length() != 0) {
    URL myURL = URL.parseString(url);
    Cookie[] cookies = manager.getCookies(myURL);
    HttpGet httpGet = new HttpGet(url);
    if (cookies != null && cookies.length > 0) {
    StringBuilder sb = new StringBuilder();
    for (Cookie ck : cookies) {
    sb.append(ck.name).append('=').append(ck.value).append(";");
    }
    String sck = sb.toString();
    if (sck.length() > 0) {
    httpGet.setHeader("Cookie", sck);
    }
    
    }
    httpGet.setHeader("Accept-Encoding", "gzip, deflate");
    httpGet.setHeader("Accept-Language", "zh-CN");
    httpGet.setHeader("Accept", "application/json, application/xml, text/html, text/*, image/*, */*");
    try {
    response = new DefaultHttpClient().execute(httpGet);
    if (response != null) {
    int statusCode = response.getStatusLine().getStatusCode();
    if (statusCode == 200 || statusCode == 403) {
    Header[] headers = response.getHeaders("Set-Cookie");
    if (headers != null && headers.length > 0) {
    for (Header header : headers) {
    manager.setCookie(myURL, header.getValue());
    }
    }
    in = response.getEntity().getContent();
    if (in != null) {
    bre = ResourceUtil.readStream(in);
    }
    
    }
    }
    
    
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    
    
    return bre;
    
    }
    
    /**
    * 所有Post 请求底层调用方法
    *
    * @param url 请求url
    * @param values 传递的参数
    * @return byte[] 返回数据 or null
    */
    public static byte[] doPost(String url, List<NameValuePair> values) {
    System.out.println("url = " + url);
    byte[] bytes = null;
    HttpResponse response;
    InputStream inputStream = null;
    CookieManager manager = CookieManager.getInstance();
    if (url != null && url.length() != 0) {
    URL myurl = URL.parseString(url);
    Cookie[] cookies = manager.getCookies(myurl);
    HttpPost post = new HttpPost(url);
    if (cookies != null && cookies.length > 0) {
    StringBuilder sb = new StringBuilder();
    for (Cookie ck : cookies) {
    sb.append(ck.name).append('=').append(ck.value).append(";");
    }
    String sck = sb.toString();
    if (sck.length() > 0) {
    post.setHeader("Cookie", sck);
    }
    
    }
    post.setHeader("Accept-Encoding", "gzip, deflate");
    post.setHeader("Accept-Language", "zh-CN");
    post.setHeader("Accept", "application/json, application/xml, text/html, text/*, image/*, */*");
    DefaultHttpClient client = new DefaultHttpClient();
    try {
    if (values != null && values.size() > 0) {
    post.setEntity(new UrlEncodedFormEntity(values, HTTP.UTF_8));
    }
    response = client.execute(post);
    if (response != null) {
    int statusCode = response.getStatusLine().getStatusCode();
    if (statusCode == 200 || statusCode == 403) {
    Header[] headers = response.getHeaders("Set-Cookie");
    if (headers != null && headers.length > 0) {
    for (Header header : headers) {
    manager.setCookie(myurl, header.getValue());
    }
    }
    inputStream = response.getEntity().getContent();
    }
    }
    
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    if (inputStream != null) {
    bytes = ResourceUtil.readStream(inputStream);
    }
    }
    return bytes;
    }
    
    /**
    * PUT基础请求
    *
    * @param url 请求地址
    * @param values 提交参数
    * @return byte[] 请求成功后的结果
    */
    public static byte[] doPut(String url, List<NameValuePair> values) {
    byte[] ret = null;
    
    CookieManager manager = CookieManager.getInstance();
    if (url != null && url.length() > 0) {
    URL myUrl = URL.parseString(url);
    StringBuilder sb = new StringBuilder();
    Cookie[] cookies = manager.getCookies(myUrl);
    if (cookies != null && cookies.length > 0) {
    for (Cookie cookie : cookies) {
    sb.append(cookie.name).append("=").append(cookie.value).append(";");
    }
    
    }
    HttpPut request = new HttpPut(url);
    String sck = sb.toString();
    if (sck.length() > 0) {
    request.setHeader("Cookie", sck);
    }
    request.setHeader("Accept-Encoding", "gzip, deflate");
    request.setHeader("Accept-Language", "zh-CN");
    request.setHeader("Accept", "application/json, application/xml, text/html, text/*, image/*, */*");
    
    DefaultHttpClient client = new DefaultHttpClient();
    if (values != null && values.size() > 0) {
    try {
    UrlEncodedFormEntity entity;
    entity = new UrlEncodedFormEntity(values);
    request.setEntity(entity);
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    }
    }
    try {
    HttpResponse response = client.execute(request);
    if (response != null) {
    StatusLine statusLine = response.getStatusLine();
    int statusCode = statusLine.getStatusCode();
    if (statusCode == 200 || statusCode == 403) {
    Header[] headers = response.getHeaders("Set-Cookie");
    if (headers != null && headers.length > 0) {
    for (Header header : headers) {
    manager.setCookie(myUrl, header.getValue());
    }
    }
    HttpEntity entity = response.getEntity();
    InputStream inputStream = entity.getContent();
    if (inputStream != null) {
    ret = ResourceUtil.readStream(inputStream);
    inputStream.close();
    }
    }
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    return ret;
    }
    
    /**
    * Delete基础请求
    *
    * @param url 请求地址
    * @return 请求成功后的结果
    */
    public static byte[] doDelete(String url) {
    
    InputStream in;
    byte[] bre = null;
    HttpResponse response;
    CookieManager manager = CookieManager.getInstance();
    if (url != null && url.length() != 0) {
    URL myurl = URL.parseString(url);
    Cookie[] cookies = manager.getCookies(myurl);
    HttpDelete delete = new HttpDelete(url);
    if (cookies != null && cookies.length > 0) {
    StringBuilder sb = new StringBuilder();
    for (Cookie ck : cookies) {
    sb.append(ck.name).append('=').append(ck.value).append(";");
    }
    String sck = sb.toString();
    if (sck.length() > 0) {
    delete.setHeader("Cookie", sck);
    }
    
    }
    delete.setHeader("Accept-Encoding", "gzip, deflate");
    delete.setHeader("Accept-Language", "zh-CN");
    delete.setHeader("Accept", "application/json, application/xml, text/html, text/*, image/*, */*");
    try {
    response = new DefaultHttpClient().execute(delete);
    if (response != null) {
    int statusCode = response.getStatusLine().getStatusCode();
    if (statusCode == 200 || statusCode == 403) {
    Header[] headers = response.getHeaders("Set-Cookie");
    if (headers != null && headers.length > 0) {
    for (Header header : headers) {
    manager.setCookie(myurl, header.getValue());
    }
    }
    in = response.getEntity().getContent();
    if (in != null) {
    bre = ResourceUtil.readStream(in);
    }
    
    }
    }
    
    
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    
    
    return bre;
    }
    
     
    
    }

    使用HttpClient进行http post/get方法的调用,以及使用dom4j解析xml

    [java] view plain copy
     
    1. import java.io.IOException;  
    2. import java.util.List;  
    3.   
    4. import javax.servlet.ServletInputStream;  
    5. import javax.servlet.http.HttpServletRequest;  
    6. import javax.servlet.http.HttpServletResponse;  
    7.   
    8. import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;  
    9. import org.apache.commons.httpclient.HttpClient;  
    10. import org.apache.commons.httpclient.HttpStatus;  
    11. import org.apache.commons.httpclient.NameValuePair;  
    12. import org.apache.commons.httpclient.methods.PostMethod;  
    13. import org.apache.commons.httpclient.params.HttpMethodParams;  
    14. import org.apache.commons.io.IOUtils;  
    15. import org.dom4j.Document;  
    16. import org.dom4j.DocumentException;  
    17. import org.dom4j.DocumentHelper;  
    18. import org.dom4j.Element;  
    19. import org.slf4j.Logger;  
    20. import org.slf4j.LoggerFactory;  
    21. import org.springframework.stereotype.Controller;  
    22. import org.springframework.web.bind.annotation.RequestMapping;  
    23. import org.springframework.web.bind.annotation.RequestMethod;  
    24.   
    25. import com.eecn.warehouse.api.model.Address;  
    26. import com.eecn.warehouse.api.model.User;  
    27. import com.eecn.warehouse.utils.FoodBase;  
    28. import com.frogsing.common.api.open.storage.hy.TCustomer;  
    29. import com.frogsing.common.open.tools.xmlUtils;  
    30. import com.google.common.collect.Lists;  
    31. import com.thoughtworks.xstream.XStream;  
    32.   
    33. @Controller  
    34. @RequestMapping(value = {"/api"})  
    35. public class ApiAction {  
    36.     private static Logger logger = LoggerFactory.getLogger(ApiAction.class);  
    37.     public static final String SERVER_URL = "http://192.168.1.100/api/StorageApi";  
    38.       
    39.     @RequestMapping(value = {"/StorageApi"}, method = RequestMethod.POST)  
    40.     public String storageApi(TCustomer model, HttpServletRequest request, HttpServletResponse response) throws DocumentException {  
    41.         String xml = request.getParameter("xml");  
    42.         String signature = request.getParameter("signature");  
    43.         //************************http client*******************//  
    44.         PostMethod postMethod = null;  
    45.         try {  
    46.             // 构造HttpClient的实例  
    47.             HttpClient httpClient = new HttpClient();  
    48.             // 设置连接超时  
    49.             httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(10000);  
    50.             // 设置字符集  
    51.             httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");  
    52.             // 创建POST方法的实例  
    53.             postMethod = new PostMethod(SERVER_URL);  
    54.             // 使用系统提供的默认的恢复策略 该策略在碰到IO异常的时候将自动重试3次。  
    55.             postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 20000);  
    56.             // 异常时,重试处理器  
    57.             postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());  
    58.   
    59.             //参数  
    60.             NameValuePair[] nameValuePairs = new NameValuePair[2];  
    61.             nameValuePairs[0] = new NameValuePair("xml", xml);  
    62.             nameValuePairs[1] = new NameValuePair("signature", signature);  
    63.   
    64.             // 将参数加入到请求方法中  
    65.             postMethod.setRequestBody(nameValuePairs);  
    66.             // 发送连接  
    67.             int statusCode = httpClient.executeMethod(postMethod);  
    68.   
    69.             if (statusCode == HttpStatus.SC_OK) {  
    70.   
    71.                 String result = postMethod.getResponseBodyAsString();  
    72.                 logger.info("返回数据1:" + result);  
    73.                 logger.info("字符集:" + postMethod.getResponseCharSet());  
    74.                 String rspXml = new String(postMethod.getResponseBody(), "UTF-8");  
    75.                 logger.info("返回数据2:" + rspXml);  
    76.   
    77.                 Document document = DocumentHelper.parseText(rspXml);  
    78.                   
    79.                 Element signatureNode = (Element)document.selectSingleNode("//signature");  
    80.                 Element dataNode = (Element)document.selectSingleNode("//data");  
    81.                   
    82.                 String signXml = signatureNode.getText();  
    83.                 String dataXml = dataNode.getText();  
    84.                   
    85.                 String pureXml = FoodBase.decodeXml(dataXml);  
    86.                   
    87.                 request.setAttribute("pureXml", pureXml);  
    88.                 request.setAttribute("signXml", signXml);  
    89.             }  
    90.         } catch (Exception e) {  
    91.             logger.error("http client invoke error.", e);  
    92.         } finally {  
    93.             if (postMethod != null) {  
    94.                 postMethod.releaseConnection();  
    95.             }  
    96.         }  
    97.           
    98.           
    99.         //******************************************************//  
    100.         ServletInputStream inputStream = null;  
    101.         String rspXml = null;  
    102.         try {  
    103.             inputStream = request.getInputStream();  
    104.             rspXml = IOUtils.toString(inputStream, "UTF-8");  
    105.         } catch (IOException e) {  
    106.             logger.error("读取交易仓单返回数据错误.", e);  
    107.         }  
    108.           
    109.         return "api/storage";  
    110.     }  
    111.       
    112.     @RequestMapping(value = {"/MarketApi"}, method = RequestMethod.POST)  
    113.     public String marketApi(HttpServletRequest request, HttpServletResponse response) {  
    114.           
    115.         return "api/market";  
    116.     }  
    117.       
    118.     public static void main(String[] args) {  
    119.         XStream xstream = new XStream();  
    120.         xstream.alias("User", User.class);  
    121.         xstream.alias("Address", Address.class);  
    122.           
    123.         //xStream.aliasAttribute(User.class, "name", "name");  
    124.         xstream.useAttributeFor(User.class, "name");  
    125.           
    126.           
    127.         List<Address> addressList = Lists.newArrayList();  
    128.         for (int i = 0; i < 3; i++) {  
    129.             Address address = new Address();  
    130.             address.setProvince("浙江");  
    131.             addressList.add(address);  
    132.         }  
    133.         User user = new User();  
    134.         user.setAddressList(addressList);  
    135.           
    136.         user.setAccount("asddaa");  
    137.         user.setAge(23);  
    138.         user.setGender(0);  
    139.         user.setName("zhang");  
    140.           
    141.         System.out.println(xstream.toXML(user));  
    142.           
    143.         System.out.println(xmlUtils.toEntityXml(user));  
    144.     }  
    145. }  
    get方法类似。
     
     
     
     
     
     
     
     
     
     
     
     

    1、httpclient4.3.4 读取网页内容 

    特别说明:StreamUtils  只是做了简单的关闭流操作,这个类可有自己写,或者直接调用流关闭操作 谢谢

    [java] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. package com.haokuaisheng.https;  
    2.   
    3. import java.io.ByteArrayOutputStream;  
    4. import java.io.InputStream;  
    5. import java.util.Arrays;  
    6. import java.util.List;  
    7.   
    8. import org.apache.http.Consts;  
    9. import org.apache.http.Header;  
    10. import org.apache.http.HttpEntity;  
    11. import org.apache.http.NameValuePair;  
    12. import org.apache.http.client.entity.UrlEncodedFormEntity;  
    13. import org.apache.http.client.methods.CloseableHttpResponse;  
    14. import org.apache.http.client.methods.HttpGet;  
    15. import org.apache.http.client.methods.HttpPost;  
    16. import org.apache.http.impl.client.CloseableHttpClient;  
    17. import org.apache.http.impl.client.HttpClients;  
    18. import org.apache.http.message.BasicHeader;  
    19.   
    20. import com.haokuaisheng.log.LogManager;  
    21. import com.haokuaisheng.utils.StreamUtils;  
    22.   
    23.   
    24.   
    25.   
    26. public class HttpUtils {  
    27.       
    28.     final static Header HEADER_USER_AGENT = new BasicHeader( "user-agent" , "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2700.0 Safari/537.36");  
    29.     final static Header HEADER_CONNECTION = new BasicHeader( "connection" , "keep-alive");  
    30.     final static Header HEADER_CACHE_CONTROL = new BasicHeader( "cache-control" , "max-age=0");  
    31.     final static Header HEADER_ACCEPT = new BasicHeader( "accept" , "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");  
    32.     final static Header HEADER_ACCEPT_ENCODING = new BasicHeader( "accept-encoding" , "gzip, deflate, sdch");  
    33.     final static Header HEADER_ACCEPT_LANGUAGE = new BasicHeader( "accept-language" , "zh-CN,zh;q=0.8,en;q=0.6");  
    34.     /**  
    35.      * 发送get请求  
    36.      * @param url 请求的url链接  
    37.      * @param charSet该链接字符编码  
    38.      * */  
    39.     public static String requestGet(String url , String charSet , NameValuePair...nameValuePairs){  
    40.         CloseableHttpClient httpclient = HttpClients.createDefault();    
    41.         CloseableHttpResponse response = null ;  
    42.         try {  
    43.             HttpGet httpget = new HttpGet( url );    
    44.             httpget.setHeader( HEADER_USER_AGENT ) ;  
    45.             httpget.setHeader( HEADER_CONNECTION ) ;  
    46.             httpget.setHeader( HEADER_CACHE_CONTROL ) ;  
    47.             httpget.setHeader( HEADER_ACCEPT ) ;  
    48.             httpget.setHeader( HEADER_ACCEPT_ENCODING);  
    49.             httpget.setHeader( HEADER_ACCEPT_LANGUAGE);  
    50.               
    51.             response = httpclient.execute( httpget ) ;  
    52.             if(response.getStatusLine().getStatusCode() == 200){  
    53.                 HttpEntity entity = response.getEntity() ;  
    54.                 return inputStreamToString( entity , charSet );  
    55.             }  
    56.         } catch (Exception e) {  
    57.             LogManager.err("requestGet:" + url , e) ;  
    58.         }finally{  
    59.             try {  
    60.                 response.close();  
    61.                 httpclient.close();  
    62.             } catch (Exception e) {  
    63.             }  
    64.         }  
    65.         return "" ;  
    66.     }  
    67.       
    68.     /** 
    69.      * 发送post请求 
    70.      * @param url 请求的url链接 
    71.      * @param charSet该链接字符编码 
    72.      * */  
    73.     public static String requestPost(String url , String charSet , NameValuePair...nameValuePairs){  
    74.         CloseableHttpClient httpclient = HttpClients.createDefault();    
    75.         CloseableHttpResponse response = null ;  
    76.         try {  
    77.             HttpPost httpPost = new HttpPost( url );    
    78.             httpPost.setHeader( HEADER_USER_AGENT ) ;  
    79.             httpPost.setHeader( HEADER_CONNECTION ) ;  
    80.             httpPost.setHeader( HEADER_CACHE_CONTROL ) ;  
    81.             httpPost.setHeader( HEADER_ACCEPT ) ;  
    82.             httpPost.setHeader( HEADER_ACCEPT_ENCODING);  
    83.             httpPost.setHeader( HEADER_ACCEPT_LANGUAGE);  
    84.               
    85.             List<namevaluepair> formparams = Arrays.asList( nameValuePairs );  
    86.             UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(formparams, Consts.UTF_8);   
    87.               
    88.             httpPost.setEntity( formEntity ) ;  
    89.             response = httpclient.execute( httpPost ) ;   
    90.             if(response.getStatusLine().getStatusCode() == 200){  
    91.                 HttpEntity entity = response.getEntity() ;  
    92.                 return inputStreamToString( entity , charSet );  
    93.             }  
    94.         } catch (Exception e) {  
    95.             LogManager.err("requestPost:" + url , e) ;   
    96.         }finally{  
    97.             try {  
    98.                 response.close();  
    99.                 httpclient.close();  
    100.             } catch (Exception e) {  
    101.             }  
    102.         }  
    103.         return "" ;  
    104.     }  
    105.       
    106.       
    107.     private static String inputStreamToString(HttpEntity entity , String charSet)  
    108.             throws Exception{  
    109.         InputStream is = null ;   
    110.         ByteArrayOutputStream baos = new ByteArrayOutputStream();  
    111.         try {  
    112.             is = entity.getContent() ;  
    113.             byte[]bytes = new byte[52428800] ;  
    114.             int buffer = -1;  
    115.               
    116.             while( (buffer = is.read(bytes)) != -1){  
    117.                 baos.write(bytes, 0, buffer) ;  
    118.             }  
    119.             return new String(baos.toByteArray() , charSet ) ;  
    120.         }finally{  
    121.             StreamUtils.closeInput( is );  
    122.             StreamUtils.closeOutput( baos );  
    123.         }  
    124.     }  
    125.       
    126.     public static void main(String[] args) {  
    127.         //String result = requestGet("http://127.0.0.1:8080/a/?age=19" ,  "UTF-8" );  
    128.         //LogManager.info(" " + result.replace("  
    129. ", " "));  
    130.           
    131.         String result = requestGet("http://neihanshequ.com/" ,  "UTF-8" );  
    132.           
    133.           
    134.           
    135.         LogManager.info(" " + result.replace("  
    136. ", " "));  
    137.           
    138.         /* 
    139.         String result = requestPost("http://127.0.0.1:8080/a/" ,  "UTF-8" , new BasicNameValuePair("name" , "中文中文中文")  
    140.         ,  new BasicNameValuePair("age" , "19")  ); 
    141.         LogManager.info(result.replace(" 
    142. ", " "));*/  
    143.     }  
    144.       
    145.       
    146. }  
    147.   
    148. </namevaluepair>  

    采用jsoup-1.7.2. 和webmagic-core-0.5.2 jin

    [java] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    1. package com.haokuaisheng.https;  
    2.   
    3. import java.util.List;  
    4.   
    5. import com.haokuaisheng.log.LogManager;  
    6.   
    7. import us.codecraft.webmagic.selector.Html;  
    8.   
    9.   
    10.   
    11. public class XPathUtils {  
    12.       
    13.     public static void main(String[] args) throws Exception {  
    14.           
    15.         String htmlStr = HttpUtils.requestGet("http://neihanshequ.com/", "UTF-8");  
    16.         Html html = new Html( htmlStr ) ;   
    17.         //List<String> titles = html.xpath( "//div[@class='post_item_body']/h3/a/text()" ).all() ;  
    18.         List<String> titles = html.xpath( "//span[@class='name']/text()" ).all() ;  
    19.           
    20.         //List<String> bodys = html.xpath( "//div[@class='post_item_body']/p[@class='post_item_summary']/text()" ).all() ;  
    21.         List<String> bodys = html.xpath( "//h1[@class='title']/p/html()" ).all() ;  
    22.         int size = titles.size();  
    23.         for(int x=0; x<size; x++ ){  
    24.             String title = titles.get( x ) ;   
    25.             String body = bodys.get( x );  
    26.             LogManager.info(" " +  title  + "-->" + body) ;   
    27.         }  
    28.     }  
    29.       

    其它更深入:

    http://www.th7.cn/Program/java/201605/859929.shtml

    http://www.tuicool.com/articles/Unumeu

    http://blog.csdn.net/binsweet/article/details/5861427

    http://blog.csdn.net/csdnbsd/article/details/51850826

    http://blog.csdn.net/kl28978113/article/details/51997201

    http://blog.csdn.net/kl28978113/article/details/51997201

  • 相关阅读:
    面试技巧——经典面试问题回答思路
    Linux试题及答案(一)
    面试中的问到薪资问题怎么回答?
    LoadRunner监控Linux
    面试时如何解释被裁原因
    可持久化数组
    洛谷P2286宠物收养场·改
    改博客的背景
    洛谷P2286宠物收养场
    阶乘的0
  • 原文地址:https://www.cnblogs.com/timssd/p/5971856.html
Copyright © 2011-2022 走看看