JAVA發送HttpClient請求及接收請求結果處理爲JSONOBJCET過程

http://blog.csdn.net/qianlong2hao/article/details/50175939


一.

1、寫一個HttpRequestUtils工具類,包括post請求和get請求

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

package com.brainlong.framework.util.httpclient;

 

import net.sf.json.JSONObject;

import org.apache.commons.httpclient.HttpStatus;

import org.apache.http.HttpResponse;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.entity.StringEntity;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.util.EntityUtils;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

 

import java.io.IOException;

import java.net.URLDecoder;

 

public class HttpRequestUtils {

    private static Logger logger = LoggerFactory.getLogger(HttpRequestUtils.class);    //日誌記錄

 

    /**

     * httpPost

     * @param url  路徑

     * @param jsonParam 參數

     * @return

     */

    public static JSONObject httpPost(String url,JSONObject jsonParam){

        return httpPost(url, jsonParam, false);

    }

 

    /**

     * post請求

     * @param url         url地址

     * @param jsonParam     參數

     * @param noNeedResponse    不需要返回結果

     * @return

     */

    public static JSONObject httpPost(String url,JSONObject jsonParam, boolean noNeedResponse){

        //post請求返回結果

        DefaultHttpClient httpClient = new DefaultHttpClient();

        JSONObject jsonResult = null;

        HttpPost method = new HttpPost(url);

        try {

            if (null != jsonParam) {

                //解決中文亂碼問題

                StringEntity entity = new StringEntity(jsonParam.toString(), "utf-8");

                entity.setContentEncoding("UTF-8");

                entity.setContentType("application/json");

                method.setEntity(entity);

            }

            HttpResponse result = httpClient.execute(method);

            url = URLDecoder.decode(url, "UTF-8");

            /**請求發送成功,並得到響應**/

            if (result.getStatusLine().getStatusCode() == 200) {

                String str = "";

                try {

                    /**讀取服務器返回過來的json字符串數據**/

                    str = EntityUtils.toString(result.getEntity());

                    if (noNeedResponse) {

                        return null;

                    }

                    /**把json字符串轉換成json對象**/

                    jsonResult = JSONObject.fromObject(str);

                catch (Exception e) {

                    logger.error("post請求提交失敗:" + url, e);

                }

            }

        catch (IOException e) {

            logger.error("post請求提交失敗:" + url, e);

        }

        return jsonResult;

    }

 

 

    /**

     * 發送get請求

     * @param url    路徑

     * @return

     */

    public static JSONObject httpGet(String url){

        //get請求返回結果

        JSONObject jsonResult = null;

        try {

            DefaultHttpClient client = new DefaultHttpClient();

            //發送get請求

            HttpGet request = new HttpGet(url);

            HttpResponse response = client.execute(request);

 

            /**請求發送成功,並得到響應**/

            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

                /**讀取服務器返回過來的json字符串數據**/

                String strResult = EntityUtils.toString(response.getEntity());

                /**把json字符串轉換成json對象**/

                jsonResult = JSONObject.fromObject(strResult);

                url = URLDecoder.decode(url, "UTF-8");

            else {

                logger.error("get請求提交失敗:" + url);

            }

        catch (IOException e) {

            logger.error("get請求提交失敗:" + url, e);

        }

        return jsonResult;

    }

}

2、寫業務代碼發送Http請求

3、MVC配置文件設置Controller掃描目錄

?

1

2

3

4

<!-- 自動掃描且只掃描@Controller -->

<context:component-scan base-package="com.wiselong.multichannel" use-default-filters="false">

    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />

</context:component-scan>

4、接收Http請求

    接收post請求

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

@Controller

@RequestMapping(value = "/api/platform/exceptioncenter/exceptioninfo")

public class ExceptionInfoController {

    //注入

    @Autowired

    private ExceptionInfoBiz exceptionInfoBiz;

 

    /**

     * 創建異常信息請求

     * @param requestBody 請求消息內容

     * @param request 請求消息頭

     * @return jsonObject

     */

    @RequestMapping(

            value="/create",

            method = RequestMethod.POST

    )

    public ModelAndView createExceptionInfo(@RequestBody String requestBody, HttpServletRequest request) {

        JSONObject jsonObject = JSONObject.fromObject(requestBody);

        ComExceptionInfo comExceptionInfo = new ComExceptionInfo();

        comExceptionInfo.setProjectName(jsonObject.getString("projectName"));

        comExceptionInfo.setTagName(jsonObject.getString("tagName"));

        exceptionInfoBiz.insert(comExceptionInfo);

        //返回請求結果

        JSONObject result= new JSONObject();

        result.put("success""true");

        return new ModelAndView("", ResponseUtilsHelper.jsonSuccess(result.toString()));

    }

  }


接收get請求

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

@Controller

@RequestMapping(value="/api/platform/messagecenter/messages/sms")

public class SmsController {

    @Autowired

    SmsSendBiz smsSendBiz;

 

    /**

     * 接收手機號碼和內容往短信發送表插入一條記錄

     * @param requestbody 請求消息內容

     * @param request 請求消息頭

     * @return jsonObject

     */

    @RequestMapping(

            value="/send",

            method= RequestMethod.GET

    )

    public ModelAndView sendSms(@RequestBody String requestbody, HttpServletRequest request) {

        //獲取請求URL及url後面傳輸的參數

        String url = request.getRequestURL() + "?" + request.getQueryString();

        url = BuildRequestUrl.decodeUrl(url);

        String telePhone = RequestUtils.getStringValue(request, "telePhone");

        String content = RequestUtils.getStringValue(request, "content");

        smsSendBiz.insertTtMsQuequ(telePhone,content);

        return new ModelAndView("", ResponseUtilsHelper.jsonResult(""true));

    }

}




二.





get 





?










1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


17


18


19


20


21


22


23


24


25


26


27


28


29


30


31


32


33


34


35


36


37


38



import java.io.BufferedReader;


import java.io.IOException;


import java.io.InputStream;


import java.io.InputStreamReader;


 


import org.apache.commons.httpclient.HttpClient;


import org.apache.commons.httpclient.HttpMethod;


import org.apache.commons.httpclient.methods.GetMethod;


 


public class H_client_get {


    public static void main(String[] args) throws IOException {


//     
new類對象


        HttpClient client = new HttpClient();


//     
使用 GET 方法 與URL服務器進行交互


//     
HttpMethod method = new GetMethod("http://192.168.111.128/bak/[email protected]&password=1234567&re_password=1234567&username=admin&nickname=管理員");


        HttpMethod method = new GetMethod("http://192.168.111.128/bak/login.php?username=");


//     
使用 GET 方法 ,實行與url服務器連接


        client.executeMethod(method);


//     
數據流輸出


//     
method.getResponseBodyAsStream 創建字節流對象爲inputStream


        InputStream inputStream = method.getResponseBodyAsStream();


//     
InputStreamReader(inputStream)字節流轉換成字符流    BufferedReader封裝成帶有緩衝的字符流對象了  


        BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));


//     
StringBuffer是字符串變量,它的對象是可以擴充和修改的       創建一個空的StringBuffer類的對象    


        StringBuffer stringBuffer = new StringBuffer();


//     
定義字符串常量


        String str= "";


//     
br字符流賦值給str字符串常量  str不等於空 按行輸出


        while((str = br.readLine()) != null){ 


//         
StringBuffer 是字符串變量,它的對象是可以擴充和修改的  將str數據賦予 stringBuffer 


            stringBuffer .append(str );   


        }   


//     
按照字符串循環輸出stringBuffer


        System.out.println(stringBuffer.toString());


//     
關閉method 的 httpclient連接


        method.releaseConnection();


    }


}





post





?










1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


17


18


19


20


21


22


23


24


25


26


27


28


29


30



import java.io.BufferedReader;


import java.io.IOException;


import java.io.InputStream;


import java.io.InputStreamReader;


 


import org.apache.commons.httpclient.methods.PostMethod;


import org.apache.commons.httpclient.*;


 


public class H_client_post {


    public static void main(String[] args) throws IOException {


        HttpClient client = new HttpClient();


        PostMethod 
method = 
new PostMethod("http://192.168.111.128/bak/login_post.php");


        //表單域的值,既post傳入的key=value


        NameValuePair[] date = { new NameValuePair("username","admin"),new NameValuePair("password","123457")};


        //method使用表單閾值


        method.setRequestBody(date);


        //提交表單


        client.executeMethod(method);


        //字符流轉字節流  循環輸出,同get解釋


        InputStream inputStream = method.getResponseBodyAsStream();


        BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));


        StringBuffer stringBuffer = new StringBuffer();


        String str= "";


        while((str = br.readLine()) != null){ 


            stringBuffer .append(str );   


        }     


        System.out.println(stringBuffer.toString());


        method.releaseConnection();


    }


}







三.





Http協議的重要性相信不用我多說了,HttpClient相比傳統JDK自帶的URLConnection,增加了易用性和靈活性(具體區別,日後我們再討論),它不僅是客戶端發送Http請求變得容易,而且也方便了開發人員測試接口(基於Http協議的),即提高了開發的效率,也方便提高代碼的健壯性。因此熟練掌握HttpClient是很重要的必修內容,掌握HttpClient後,相信對於Http協議的瞭解會更加深入。


一、簡介



HttpClient是Apache Jakarta Common下的子項目,用來提供高效的、最新的、功能豐富的支持HTTP協議的客戶端編程工具包,並且它支持HTTP協議最新的版本和建議。HttpClient已經應用在很多的項目中,比如Apache Jakarta上很著名的另外兩個開源項目Cactus和HTMLUnit都使用了HttpClient。



下載地址: http://hc.apache.org/downloads.cgi


二、特性



1. 基於標準、純淨的Java語言。實現了Http1.0和Http1.1



2. 以可擴展的面向對象的結構實現了Http全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)。



3. 支持HTTPS協議。



4. 通過Http代理建立透明的連接。



5. 利用CONNECT方法通過Http代理建立隧道的https連接。



6. Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, SNPNEGO/Kerberos認證方案。



7. 插件式的自定義認證方案。



8. 便攜可靠的套接字工廠使它更容易的使用第三方解決方案。



9. 連接管理器支持多線程應用。支持設置最大連接數,同時支持設置每個主機的最大連接數,發現並關閉過期的連接。



10. 自動處理Set-Cookie中的Cookie。



11. 插件式的自定義Cookie策略。



12. Request的輸出流可以避免流中內容直接緩衝socket服務器。



13. Response的輸入流可以有效的從socket服務器直接讀取相應內容。



14. 在http1.0和http1.1中利用KeepAlive保持持久連接。



15. 直接獲取服務器發送的response code和 headers。



16. 設置連接超時的能力。



17. 實驗性的支持http1.1 response caching。



18. 源代碼基於Apache License 可免費獲取。


三、使用方法



使用HttpClient發送請求、接收響應很簡單,一般需要如下幾步即可。



1. 創建HttpClient對象。



2. 創建請求方法的實例,並指定請求URL。如果需要發送GET請求,創建HttpGet對象;如果需要發送POST請求,創建HttpPost對象。



3. 如果需要發送請求參數,可調用HttpGet、HttpPost共同的setParams(HetpParams params)方法來添加請求參數;對於HttpPost對象而言,也可調用setEntity(HttpEntity entity)方法來設置請求參數。



4. 調用HttpClient對象的execute(HttpUriRequest request)發送請求,該方法返回一個HttpResponse。



5. 調用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可獲取服務器的響應頭;調用HttpResponse的getEntity()方法可獲取HttpEntity對象,該對象包裝了服務器的響應內容。程序可通過該對象獲取服務器的響應內容。



6. 釋放連接。無論執行方法是否成功,都必須釋放連接


四、實例





[java] view
plain
copy在CODE上查看代碼片派生到我的代碼片






  1. package com.test;  

  2.   

  3. import java.io.File;  

  4. import java.io.FileInputStream;  

  5. import java.io.IOException;  

  6. import java.io.UnsupportedEncodingException;  

  7. import java.security.KeyManagementException;  

  8. import java.security.KeyStore;  

  9. import java.security.KeyStoreException;  

  10. import java.security.NoSuchAlgorithmException;  

  11. import java.security.cert.CertificateException;  

  12. import java.util.ArrayList;  

  13. import java.util.List;  

  14.   

  15. import javax.net.ssl.SSLContext;  

  16.   

  17. import org.apache.http.HttpEntity;  

  18. import org.apache.http.NameValuePair;  

  19. import org.apache.http.ParseException;  

  20. import org.apache.http.client.ClientProtocolException;  

  21. import org.apache.http.client.entity.UrlEncodedFormEntity;  

  22. import org.apache.http.client.methods.CloseableHttpResponse;  

  23. import org.apache.http.client.methods.HttpGet;  

  24. import org.apache.http.client.methods.HttpPost;  

  25. import org.apache.http.conn.ssl.SSLConnectionSocketFactory;  

  26. import org.apache.http.conn.ssl.SSLContexts;  

  27. import org.apache.http.conn.ssl.TrustSelfSignedStrategy;  

  28. import org.apache.http.entity.ContentType;  

  29. import org.apache.http.entity.mime.MultipartEntityBuilder;  

  30. import org.apache.http.entity.mime.content.FileBody;  

  31. import org.apache.http.entity.mime.content.StringBody;  

  32. import org.apache.http.impl.client.CloseableHttpClient;  

  33. import org.apache.http.impl.client.HttpClients;  

  34. import org.apache.http.message.BasicNameValuePair;  

  35. import org.apache.http.util.EntityUtils;  

  36. import org.junit.Test;  

  37.   

  38. public class HttpClientTest {  

  39.   

  40.     @Test  

  41.     public void jUnitTest() {  

  42.         get();  

  43.     }  

  44.   

  45.     /** 

  46.      * HttpClient連接SSL 

  47.      */  

  48.     public void ssl() {  

  49.         CloseableHttpClient httpclient = null;  

  50.         try {  

  51.             KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());  

  52.             FileInputStream instream = new FileInputStream(new File("d:\\tomcat.keystore"));  

  53.             try {  

  54.                 // 加載keyStore d:\\tomcat.keystore    

  55.                 trustStore.load(instream, "123456".toCharArray());  

  56.             } catch (CertificateException e) {  

  57.                 e.printStackTrace();  

  58.             } finally {  

  59.                 try {  

  60.                     instream.close();  

  61.                 } catch (Exception ignore) {  

  62.                 }  

  63.             }  

  64.             // 相信自己的CA和所有自簽名的證書  

  65.             SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(trustStore, new TrustSelfSignedStrategy()).build();  

  66.             // 只允許使用TLSv1協議  

  67.             SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1" }, null,  

  68.                     SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);  

  69.             httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build();  

  70.             // 創建http請求(get方式)  

  71.             HttpGet httpget = new HttpGet("https://localhost:8443/myDemo/Ajax/serivceJ.action");  

  72.             System.out.println("executing request" + httpget.getRequestLine());  

  73.             CloseableHttpResponse response = httpclient.execute(httpget);  

  74.             try {  

  75.                 HttpEntity entity = response.getEntity();  

  76.                 System.out.println("----------------------------------------");  

  77.                 System.out.println(response.getStatusLine());  

  78.                 if (entity != null) {  

  79.                     System.out.println("Response content length: " + entity.getContentLength());  

  80.                     System.out.println(EntityUtils.toString(entity));  

  81.                     EntityUtils.consume(entity);  

  82.                 }  

  83.             } finally {  

  84.                 response.close();  

  85.             }  

  86.         } catch (ParseException e) {  

  87.             e.printStackTrace();  

  88.         } catch (IOException e) {  

  89.             e.printStackTrace();  

  90.         } catch (KeyManagementException e) {  

  91.             e.printStackTrace();  

  92.         } catch (NoSuchAlgorithmException e) {  

  93.             e.printStackTrace();  

  94.         } catch (KeyStoreException e) {  

  95.             e.printStackTrace();  

  96.         } finally {  

  97.             if (httpclient != null) {  

  98.                 try {  

  99.                     httpclient.close();  

  100.                 } catch (IOException e) {  

  101.                     e.printStackTrace();  

  102.                 }  

  103.             }  

  104.         }  

  105.     }  

  106.   

  107.     /** 

  108.      * post方式提交表單(模擬用戶登錄請求) 

  109.      */  

  110.     public void postForm() {  

  111.         // 創建默認的httpClient實例.    

  112.         CloseableHttpClient httpclient = HttpClients.createDefault();  

  113.         // 創建httppost    

  114.         HttpPost httppost = new HttpPost("http://localhost:8080/myDemo/Ajax/serivceJ.action");  

  115.         // 創建參數隊列    

  116.         List<namevaluepair> formparams = new ArrayList<namevaluepair>();  

  117.         formparams.add(new BasicNameValuePair("username""admin"));  

  118.         formparams.add(new BasicNameValuePair("password""123456"));  

  119.         UrlEncodedFormEntity uefEntity;  

  120.         try {  

  121.             uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");  

  122.             httppost.setEntity(uefEntity);  

  123.             System.out.println("executing request " + httppost.getURI());  

  124.             CloseableHttpResponse response = httpclient.execute(httppost);  

  125.             try {  

  126.                 HttpEntity entity = response.getEntity();  

  127.                 if (entity != null) {  

  128.                     System.out.println("--------------------------------------");  

  129.                     System.out.println("Response content: " + EntityUtils.toString(entity, "UTF-8"));  

  130.                     System.out.println("--------------------------------------");  

  131.                 }  

  132.             } finally {  

  133.                 response.close();  

  134.             }  

  135.         } catch (ClientProtocolException e) {  

  136.             e.printStackTrace();  

  137.         } catch (UnsupportedEncodingException e1) {  

  138.             e1.printStackTrace();  

  139.         } catch (IOException e) {  

  140.             e.printStackTrace();  

  141.         } finally {  

  142.             // 關閉連接,釋放資源    

  143.             try {  

  144.                 httpclient.close();  

  145.             } catch (IOException e) {  

  146.                 e.printStackTrace();  

  147.             }  

  148.         }  

  149.     }  

  150.   

  151.     /** 

  152.      * 發送 post請求訪問本地應用並根據傳遞參數不同返回不同結果 

  153.      */  

  154.     public void post() {  

  155.         // 創建默認的httpClient實例.    

  156.         CloseableHttpClient httpclient = HttpClients.createDefault();  

  157.         // 創建httppost    

  158.         HttpPost httppost = new HttpPost("http://localhost:8080/myDemo/Ajax/serivceJ.action");  

  159.         // 創建參數隊列    

  160.         List<namevaluepair> formparams = new ArrayList<namevaluepair>();  

  161.         formparams.add(new BasicNameValuePair("type""house"));  

  162.         UrlEncodedFormEntity uefEntity;  

  163.         try {  

  164.             uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");  

  165.             httppost.setEntity(uefEntity);  

  166.             System.out.println("executing request " + httppost.getURI());  

  167.             CloseableHttpResponse response = httpclient.execute(httppost);  

  168.             try {  

  169.                 HttpEntity entity = response.getEntity();  

  170.                 if (entity != null) {  

  171.                     System.out.println("--------------------------------------");  

  172.                     System.out.println("Response content: " + EntityUtils.toString(entity, "UTF-8"));  

  173.                     System.out.println("--------------------------------------");  

  174.                 }  

  175.             } finally {  

  176.                 response.close();  

  177.             }  

  178.         } catch (ClientProtocolException e) {  

  179.             e.printStackTrace();  

  180.         } catch (UnsupportedEncodingException e1) {  

  181.             e1.printStackTrace();  

  182.         } catch (IOException e) {  

  183.             e.printStackTrace();  

  184.         } finally {  

  185.             // 關閉連接,釋放資源    

  186.             try {  

  187.                 httpclient.close();  

  188.             } catch (IOException e) {  

  189.                 e.printStackTrace();  

  190.             }  

  191.         }  

  192.     }  

  193.   

  194.     /** 

  195.      * 發送 get請求 

  196.      */  

  197.     public void get() {  

  198.         CloseableHttpClient httpclient = HttpClients.createDefault();  

  199.         try {  

  200.             // 創建httpget.    

  201.             HttpGet httpget = new HttpGet("http://www.baidu.com/");  

  202.             System.out.println("executing request " + httpget.getURI());  

  203.             // 執行get請求.    

  204.             CloseableHttpResponse response = httpclient.execute(httpget);  

  205.             try {  

  206.                 // 獲取響應實體    

  207.                 HttpEntity entity = response.getEntity();  

  208.                 System.out.println("--------------------------------------");  

  209.                 // 打印響應狀態    

  210.                 System.out.println(response.getStatusLine());  

  211.                 if (entity != null) {  

  212.                     // 打印響應內容長度    

  213.                     System.out.println("Response content length: " + entity.getContentLength());  

  214.                     // 打印響應內容    

  215.                     System.out.println("Response content: " + EntityUtils.toString(entity));  

  216.                 }  

  217.                 System.out.println("------------------------------------");  

  218.             } finally {  

  219.                 response.close();  

  220.             }  

  221.         } catch (ClientProtocolException e) {  

  222.             e.printStackTrace();  

  223.         } catch (ParseException e) {  

  224.             e.printStackTrace();  

  225.         } catch (IOException e) {  

  226.             e.printStackTrace();  

  227.         } finally {  

  228.             // 關閉連接,釋放資源    

  229.             try {  

  230.                 httpclient.close();  

  231.             } catch (IOException e) {  

  232.                 e.printStackTrace();  

  233.             }  

  234.         }  

  235.     }  

  236.   

  237.     /** 

  238.      * 上傳文件 

  239.      */  

  240.     public void upload() {  

  241.         CloseableHttpClient httpclient = HttpClients.createDefault();  

  242.         try {  

  243.             HttpPost httppost = new HttpPost("http://localhost:8080/myDemo/Ajax/serivceFile.action");  

  244.   

  245.             FileBody bin = new FileBody(new File("F:\\image\\sendpix0.jpg"));  

  246.             StringBody comment = new StringBody("A binary file of some kind", ContentType.TEXT_PLAIN);  

  247.   

  248.             HttpEntity reqEntity = MultipartEntityBuilder.create().addPart("bin", bin).addPart("comment", comment).build();  

  249.   

  250.             httppost.setEntity(reqEntity);  

  251.   

  252.             System.out.println("executing request " + httppost.getRequestLine());  

  253.             CloseableHttpResponse response = httpclient.execute(httppost);  

  254.             try {  

  255.                 System.out.println("----------------------------------------");  

  256.                 System.out.println(response.getStatusLine());  

  257.                 HttpEntity resEntity = response.getEntity();  

  258.                 if (resEntity != null) {  

  259.                     System.out.println("Response content length: " + resEntity.getContentLength());  

  260.                 }  

  261.                 EntityUtils.consume(resEntity);  

  262.             } finally {  

  263.                 response.close();  

  264.             }  

  265.         } catch (ClientProtocolException e) {  

  266.             e.printStackTrace();  

  267.         } catch (IOException e) {  

  268.             e.printStackTrace();  

  269.         } finally {  

  270.             try {  

  271.                 httpclient.close();  

  272.             } catch (IOException e) {  

  273.                 e.printStackTrace();  

  274.             }  

  275.         }  

  276.     }  

  277. }</namevaluepair></namevaluepair></namevaluepair></namevaluepair>  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章