posts - 495,comments - 227,trackbacks - 0
          package com.test;

          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;

          import org.apache.commons.httpclient.Cookie;
          import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
          import org.apache.commons.httpclient.Header;
          import org.apache.commons.httpclient.HttpClient;
          import org.apache.commons.httpclient.HttpException;
          import org.apache.commons.httpclient.HttpStatus;
          import org.apache.commons.httpclient.NameValuePair;
          import org.apache.commons.httpclient.URI;
          import org.apache.commons.httpclient.cookie.CookiePolicy;
          import org.apache.commons.httpclient.cookie.CookieSpec;
          import org.apache.commons.httpclient.methods.GetMethod;
          import org.apache.commons.httpclient.methods.PostMethod;
          import org.apache.commons.httpclient.params.HttpMethodParams;

          public class HttpWeb {

              
          public static String getGetResponse(String url) {
                  String html 
          = "";
                  
          // 構(gòu)造HttpClient的實(shí)例
                  HttpClient httpClient = new HttpClient();
                  
          // 創(chuàng)建GET方法的實(shí)例
                  GetMethod getMethod = new GetMethod(url);
                  
          // 使用系統(tǒng)提供的默認(rèn)的恢復(fù)策略
                  getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
                  
          try {
                      
          // 執(zhí)行g(shù)etMethod
                      int statusCode = httpClient.executeMethod(getMethod);
                      
          if (statusCode != HttpStatus.SC_OK) {
                          System.err.println(
          "Method failed: " + getMethod.getStatusLine());
                      }
                      
          // 處理內(nèi)容
                      html = getMethod.getResponseBodyAsString();
                  } 
          catch (HttpException e) {
                      
          // 發(fā)生致命的異常,可能是協(xié)議不對(duì)或者返回的內(nèi)容有問(wèn)題
                      System.out.println("Please check your provided http address!");
                      e.printStackTrace();
                  } 
          catch (IOException e) {
                      
          // 發(fā)生網(wǎng)絡(luò)異常
                      e.printStackTrace();
                  } 
          finally {
                      
          // 釋放連接
                      getMethod.releaseConnection();
                  }
                  
          return html;
              }

              
          public static String getPostResponse(String url) throws HttpException, IOException {
                  String html 
          = "";
                  HttpClient httpClient 
          = new HttpClient();
                  PostMethod postMethod 
          = new PostMethod(url);
                  postMethod.setRequestHeader(
          "accept""*/*");
                  postMethod.setRequestHeader(
          "connection""Keep-Alive");
                  postMethod.setRequestHeader(
          "user-agent""Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
                  postMethod.setRequestHeader(
          "Accept-Language""zh-cn,zh;q=0.5");
                  
          // postMethod.setRequestHeader("Accept-Encoding", "gzip,deflate");
                  
          // postMethod.setRequestHeader("Content-Type", "text/html;charset=utf-8");
                  
          // 填入各個(gè)表單域的值
                  NameValuePair[] data = { new NameValuePair("msg""你好") };
                  
          // 將表單的值放入postMethod中
                  postMethod.setRequestBody(data);
                  
          // 執(zhí)行postMethod
                  int statusCode = httpClient.executeMethod(postMethod);
                  
          // HttpClient對(duì)于要求接受后繼服務(wù)的請(qǐng)求,象POST和PUT等不能自動(dòng)處理轉(zhuǎn)發(fā)
                  
          // 301或者302
                  if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
                      
          // 從頭中取出轉(zhuǎn)向的地址
                      Header locationHeader = postMethod.getResponseHeader("location");
                      String location 
          = null;
                      
          if (locationHeader != null) {
                          location 
          = locationHeader.getValue();
                          System.out.println(
          "The page was redirected to:" + location);
                      } 
          else {
                          System.err.println(
          "Location field value is null.");
                      }
                      
          return html;
                  }
                  
          // html = postMethod.getResponseBodyAsString();

                  System.out.println(postMethod.getResponseCharSet());
                  
          // byte[] responseBody = postMethod.getResponseBody();

                  BufferedReader in 
          = new BufferedReader(new InputStreamReader(postMethod.getResponseBodyAsStream(), postMethod
                          .getResponseCharSet()));
                  StringBuffer sb 
          = new StringBuffer();
                  
          int chari;
                  
          while ((chari = in.read()) != -1) {
                      sb.append((
          char) chari);
                  }
                  html 
          = sb.toString();
                  in.close();
                  postMethod.releaseConnection();

                  CookieSpec cookiespec 
          = CookiePolicy.getDefaultSpec();
                  postMethod.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
                  URI uri 
          = postMethod.getURI();
                  Cookie[] cookies 
          = cookiespec.match(uri.getHost(), uri.getPort() == -1 ? 80 : uri.getPort(), "/"false,
                          httpClient.getState().getCookies());
                  
          for (Cookie cookie : cookies) {
                      System.out.println(cookie.getName());
                      System.out.println(cookie.getValue());
                  }

                  postMethod.setURI(
          new URI("http://www.ssread.com/zt/writecookie2.jsp"false));
                  httpClient.executeMethod(postMethod);
                  BufferedReader in2 
          = new BufferedReader(new InputStreamReader(postMethod.getResponseBodyAsStream(), postMethod
                          .getResponseCharSet()));
                  StringBuffer sb2 
          = new StringBuffer();
                  
          int chari2;
                  
          while ((chari2 = in2.read()) != -1) {
                      sb2.append((
          char) chari2);
                  }
                  html 
          = sb2.toString();
                  in2.close();
                  postMethod.releaseConnection();
                  
          // PostMethod postMethod2 = new PostMethod("http://www.ssread.com/zt/writecookie2.jsp");
                  
          // // httpClient.getState().addCookies(cookies);
                  
          // httpClient.executeMethod(postMethod2);
                  
          // BufferedReader in2 = new BufferedReader(new InputStreamReader(postMethod2.getResponseBodyAsStream(),
                  
          // postMethod2.getResponseCharSet()));
                  
          // StringBuffer sb2 = new StringBuffer();
                  
          // int chari2;
                  
          // while ((chari2 = in2.read()) != -1) {
                  
          // sb2.append((char) chari2);
                  
          // }
                  
          // html = sb2.toString();
                  
          // in2.close();
                  
          // postMethod2.releaseConnection();
                  return html;
              }

              
          public static class UTF8PostMethod extends PostMethod {
                  
          public UTF8PostMethod(String url) {
                      
          super(url);
                  }

                  @Override
                  
          public String getRequestCharSet() {
                      
          return super.getRequestCharSet();
                      
          // return "UTF-8";
                  }
              }

              
          public static void main(String[] args) throws HttpException, IOException {
                  System.out.println(HttpWeb.getPostResponse(
          "http://www.ssread.com/zt/writecookie.jsp"));
              }
          }
          posted on 2009-06-25 17:52 SIMONE 閱讀(12942) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 大新县| 内乡县| 八宿县| 仁怀市| 商丘市| 湘乡市| 大邑县| 左贡县| 博罗县| 宁南县| 临沂市| 剑阁县| 衡南县| 安徽省| 上饶市| 岱山县| 二连浩特市| 菏泽市| 西城区| 南投县| 泸州市| 新营市| 丽水市| 高尔夫| 阿城市| 楚雄市| 遵化市| 长乐市| 宜都市| 札达县| 河北区| 襄樊市| 红安县| 宁津县| 岗巴县| 周至县| 台北市| 高碑店市| 公主岭市| 盐池县| 昭苏县|