POST数据

一、需要用到的场景

jQuery中使用$.post()就可以方便的发起一个post请求,在android程序中有时也要从服务器获取一些数据,就也必须得使用post请求了。

二、需要用到的主要类

android中使用post请求主要要用到的类是HttpPostHttpResponseEntityUtils

三、主要思路

1、创建HttpPost实例,设置需要请求服务器的url

2、为创建的HttpPost实例设置参数,参数设置时使用键值对的方式用到NameValuePair类。

3、发起post请求获取返回实例HttpResponse

4、使用EntityUtils对返回值的实体进行处理(可以取得返回的字符串,也可以取得返回的byte数组)

(httpResponse =new DefaultHttpClient().execute(httpPost)最好放在新线程里,否则会报错。也就是说没有thread的话会直接报错)

packagecom.example.posttest;

importjava.io.IOException;

importjava.util.ArrayList;

importjava.util.List;

importorg.apache.http.HttpResponse;

importorg.apache.http.NameValuePair;

importorg.apache.http.client.ClientProtocolException;

importorg.apache.http.client.entity.UrlEncodedFormEntity;

importorg.apache.http.client.methods.HttpPost;

importorg.apache.http.impl.client.DefaultHttpClient;

importorg.apache.http.message.BasicNameValuePair;

importorg.apache.http.protocol.HTTP;

importorg.apache.http.util.EntityUtils;

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.util.Log;

importandroid.widget.TextView;

import android.widget.Toast;

 

publicclass MainActivity extends Activity {

   TextView tView;

   HttpPost httpPost;

   HttpResponse httpResponse = null;

   List<NameValuePair> params;

   @Override

   publicvoid onCreate(Bundle savedInstanceState){

      super.onCreate(savedInstanceState);

      String url = "http://www.beijibear.com/android_post.php";

      tView = (TextView) findViewById(R.id.textview1);

      // 第一步,创建HttpPost对象

      httpPost = new HttpPost(url);

      // 设置HTTP POST请求参数必须用NameValuePair对象

      params = new ArrayList<NameValuePair>();

      params.add(new BasicNameValuePair("username", "beijibear"));

     

      new Thread(){

         publicvoid run() {

            try {

                // 设置httpPost请求参数

                httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));

                httpResponse = new DefaultHttpClient().execute(httpPost);

                //System.out.println(httpResponse.getStatusLine().getStatusCode());

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

                   // 第三步,使用getEntity方法活得返回结果

                   String result = EntityUtils.toString(httpResponse.getEntity());

                   Log.i("test", result+"");

                }

            } catch (ClientProtocolException e) {

                e.printStackTrace();

            } catch (IOException e) {

                e.printStackTrace();

            }

         };

      }.start();

 

   }

}

在POSTjson的时候,只需要用params.add(new BasicNameValuePair("参数" json数据))

这只是单纯的post数据,但是实际应用中应该处理超时的情况。网上有关如下讲解:

HttpClient client = new DefaultHttpClient();
client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000);
httpResponse = client.execute(httpPost);
只需要进行几行代码处理即可,但是我并没有测试出来


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值