一個HttpClient的實驗

來源:互聯網
上載者:User

其中用戶端類:

import java.io.IOException;
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.methods.DeleteMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
public class TestClient {
   public static void main(String args[]) throws IOException{
     TestClient.doGet();
     System.out.println(" ");
     System.out.println(" ");
     System.out.println(" ");
     TestClient.doPost();
     System.out.println(" ");
     System.out.println(" ");
     System.out.println(" ");
     TestClient.doDelete();
   }
   /**
   * Get擷取
   * SongWei
   */
   public static void doGet(){
     String url = "http://localhost:8080/FrameProject/ReturnMessage";
     //構造HttpClient的執行個體
     HttpClient httpClient = new HttpClient();
     //建立GET方法的執行個體
     GetMethod getMethod = new GetMethod(url);
     //使用系統提供的預設的恢複策略
     getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
         new DefaultHttpMethodRetryHandler());
     try {
       //執行getMethod
       int statusCode = httpClient.executeMethod(getMethod);
       if (statusCode != HttpStatus.SC_OK) {
         System.err.println("Method failed: "
             + getMethod.getStatusLine());
       }
       //讀取內容
       byte[] responseBody = getMethod.getResponseBody();
       //處理內容
       System.out.println(new String(responseBody,"UTF-8"));
     } catch (HttpException e) {
       //發生致命的異常,可能是協議不對或者返回的內容有問題
       System.out.println("Please check your provided http address!");
       e.printStackTrace();
     } catch (IOException e) {
       //發生網路異常
       e.printStackTrace();
     } finally {
       //釋放串連
       getMethod.releaseConnection();
     }
   }
   /**
   * Post擷取
   * SongWei
   */
   public static void doPost() throws IOException{
     String url = "http://localhost:8080/FrameProject/ReturnMessage";
//    url="http://www.newsmth.net/bbslogin2.php";
     HttpClient httpClient = new HttpClient();
     PostMethod postMethod = new PostMethod(url);
     // 填入各個表單域的值
     NameValuePair[] data = { new NameValuePair("id", "youUserName"),
         new NameValuePair("passwd", "yourPwd") };
     // 將表單的值放入postMethod中
     postMethod.setRequestBody(data);
     // 執行postMethod
     int statusCode = httpClient.executeMethod(postMethod);
     System.out.println(statusCode);
     //讀取內容
     byte[] responseBody = postMethod.getResponseBody();
     //處理內容
     System.out.println(new String(responseBody,"UTF-8"));
     // HttpClient對於要求接受後繼服務的請求,象POST和PUT等不能自動處理轉寄301或者302
     if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY
         || statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
       // 從頭中取出轉向的地址
       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;
     }else{
       System.out.println("other");
     }
   }

   /**
   * Delete擷取
   * SongWei
   */
   public static void doDelete(){
     String url = "http://localhost:8080/FrameProject/ReturnMessage";
     //構造HttpClient的執行個體
     HttpClient httpClient = new HttpClient();
     //建立GET方法的執行個體
     DeleteMethod deleteMethod = new DeleteMethod(url);
     //使用系統提供的預設的恢複策略
     deleteMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
         new DefaultHttpMethodRetryHandler());
     try {
       //執行getMethod
       int statusCode = httpClient.executeMethod(deleteMethod);
       if (statusCode != HttpStatus.SC_OK) {
         System.err.println("Method failed: "
             + deleteMethod.getStatusLine());
       }
       //讀取內容
       byte[] responseBody = deleteMethod.getResponseBody();
       //處理內容
       System.out.println(new String(responseBody,"UTF-8"));
     } catch (HttpException e) {
       //發生致命的異常,可能是協議不對或者返回的內容有問題
       System.out.println("Please check your provided http address!");
       e.printStackTrace();
     } catch (IOException e) {
       //發生網路異常
       e.printStackTrace();
     } finally {
       //釋放串連
       deleteMethod.releaseConnection();
     }
   }

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.