Android Http請求框架一:Get 和 Post 請求

趙彥軍發表於2015-07-07

1、HttpUtil

package com.app.android01;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

public class HttpUtil {

    /**
     * get請求
     * @param httpUrl
     * @return
     * @throws  
     */
    public String httpGet( String httpUrl ){
        String result = "" ;
        try {
            BufferedReader reader = null;
            StringBuffer sbf = new StringBuffer() ;

            URL url  = new URL( httpUrl ) ;
            HttpURLConnection connection = (HttpURLConnection) url.openConnection() ;
            //設定超時時間 10s
            connection.setConnectTimeout(10000);  
            //設定請求方式
            connection.setRequestMethod( "GET" ) ;
            connection.connect();
            InputStream is = connection.getInputStream() ;
            reader = new BufferedReader(new InputStreamReader( is , "UTF-8" )) ;
            String strRead = null ;
            while ((strRead = reader.readLine()) != null) {
                sbf.append(strRead);
                sbf.append("\r\n");
            }
            reader.close();
            result = sbf.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * httpPost請求
     * @param httpUrl
     * @return
     */
    public String httpPost( String httpUrl ){
        String result = "" ;
        // 第一步,建立HttpPost物件 
        HttpPost httpPost = new HttpPost( httpUrl ); 

        // 設定HTTP POST請求引數必須用NameValuePair物件 
        List<NameValuePair> params = new ArrayList<NameValuePair>(); 
        params.add(new BasicNameValuePair("action", "downloadAndroidApp")); 
        params.add(new BasicNameValuePair("packageId", "89dcb664-50a7-4bf2-aeed-49c08af6a58a")); 
        params.add(new BasicNameValuePair("uuid", "test_ok1")); 

        HttpResponse httpResponse = null; 
        try { 
            // 設定httpPost請求引數 
            httpPost.setEntity(new UrlEncodedFormEntity( params , HTTP.UTF_8 )); 
            HttpClient httpClient = new DefaultHttpClient() ;
            // 請求超時  10s
            httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000 ) ;
            // 讀取超時  10s
            httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000 );

            httpResponse = httpClient.execute( httpPost ) ; 
            if (httpResponse.getStatusLine().getStatusCode() == 200) { 
                // 第三步,使用getEntity方法活得返回結果 
                result  = EntityUtils.toString(httpResponse.getEntity()); 
            } 
        } catch (ClientProtocolException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
        return result ;
    } 
}

 

2、非同步請求

 1 /**
 2      * 非同步請求
 3      * @author admin
 4      */
 5     class GetData extends AsyncTask< String , Integer , String >{
 6 
 7         @Override
 8         protected String doInBackground(String... params) {
 9             HttpUtil httpUtil = new HttpUtil() ;
10             String resutl = httpUtil.httpGet( params[0] ) ;
11             if( resutl == null ){
12                 return "" ;
13             }
14             return resutl ;
15         }
16 
17         @Override
18         protected void onPostExecute(String result) {
19             super.onPostExecute(result);
20         }
21     }

 

 

Android Http請求框架二:xUtils 框架網路請求

 

相關文章