Android 网络操作常用的两个类(2)

如果使用HttpPost方法提交HTTP POST请求,则需要使用HttpPost类的setEntity方法设置请求参数。参数则必须用NameValuePair[]数组存储。

public String doPost() 
    { 
        String uriAPI = "http://XXXXXX";//Post方式没有参数在这里 
        String result = ""; 
        HttpPost httpRequst = new HttpPost(uriAPI);//创建HttpPost对象 
         
        List <NameValuePair> params = new ArrayList<NameValuePair>(); 
        params.add(new BasicNameValuePair("str", "I am Post String")); 
         
        try { 
            httpRequst.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8)); 
            HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequst); 
            if(httpResponse.getStatusLine().getStatusCode() == 200) 
            { 
                HttpEntity httpEntity = httpResponse.getEntity(); 
                result = EntityUtils.toString(httpEntity);//取出应答字符串 
            } 
        } catch (UnsupportedEncodingException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
            result = e.getMessage().toString(); 
        } 
        catch (ClientProtocolException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
            result = e.getMessage().toString(); 
        } 
        catch (IOException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
            result = e.getMessage().toString(); 
        } 
        return result; 
    } 

// HttpPost方式请求 
public static void requestByHttpPost() throws Exception { 
    String path = "https://reg.163.com/logins.jsp"; 
    // 新建HttpPost对象 
    HttpPost httpPost = new HttpPost(path); 
    // Post参数 
    List<NameValuePair> params = new ArrayList<NameValuePair>(); 
    params.add(new BasicNameValuePair("id", "helloworld")); 
    params.add(new BasicNameValuePair("pwd", "Android")); 
    // 设置字符集 
    HttpEntity entity = new UrlEncodedFormEntity(params, HTTP.UTF_8); 
    // 设置参数实体 
    httpPost.setEntity(entity); 
    // 获取HttpClient对象 
    HttpClient httpClient = new DefaultHttpClient(); 
    // 获取HttpResponse实例 
    HttpResponse httpResp = httpClient.execute(httpPost); 
    // 判断是够请求成功 
    if (httpResp.getStatusLine().getStatusCode() == HTTP_200) { 
        // 获取返回的数据 
        String result = EntityUtils.toString(httpResp.getEntity(), "UTF-8"); 
        Log.i(TAG_HTTPGET, "HttpPost方式请求成功,返回数据如下:"); 
        Log.i(TAG_HTTPGET, result); 
    } else { 
        Log.i(TAG_HTTPGET, "HttpPost方式请求失败"); 
    } 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/b40663ccc8201f085f92880c354f7545.html