HttpClient为Android开发者提供了跟简洁的操作Http网络连接的方法,在连接过程中也有两种方式,get和post,先看一下如何实现的

默认是get方式

//先将参数放入List,再对参数进行URL编码  List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();  params.add(new BasicNameValuePair("param1", "中国"));  params.add(new BasicNameValuePair("param2", "value2"));  //baseUrl             String baseUrl = "http://www.baidu.com";    //将URL与参数拼接  HttpGet getMethod = new HttpGet(baseUrl + "?" + param);                HttpClient httpClient = new DefaultHttpClient();    try {      HttpResponse response = httpClient.execute(getMethod); //发起GET请求        Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码      Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"));//获取服务器响应内容  } catch (ClientProtocolException e) {      // TODO Auto-generated catch block      e.printStackTrace();  } catch (IOException e) {      // TODO Auto-generated catch block      e.printStackTrace();  }  


post方式

//和GET方式一样,先将参数放入List  params = new LinkedList<BasicNameValuePair>();  params.add(new BasicNameValuePair("param1", "Post方法"));  params.add(new BasicNameValuePair("param2", "第二个参数"));                try {      HttpPost postMethod = new HttpPost(baseUrl);      postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //将参数填入POST Entity中                        HttpResponse response = httpClient.execute(postMethod); //执行POST方法      Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码      Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8")); //获取响应内容                    } catch (UnsupportedEncodingException e) {      // TODO Auto-generated catch block      e.printStackTrace();  } catch (ClientProtocolException e) {      // TODO Auto-generated catch block      e.printStackTrace();  } catch (IOException e) {      // TODO Auto-generated catch block      e.printStackTrace();  }  
如果需要在获得网络资源后,去更新UI的一些东西,需要使用异步的方式,否则会发生错误

Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            if (msg.what == 0x123) {                tv.setText(result);            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv = (TextView) findViewById(R.id.tv);        result = "";        final HttpClient httpclient = new DefaultHttpClient();        new Thread() {            public void run() {                HttpGet httpRequest = new HttpGet(                        "http://www.baidu.com");                try {                    HttpResponse httpResponse = httpclient.execute(httpRequest);                    if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {                        // 取得返回的字符串                        result = EntityUtils.toString(httpResponse.getEntity());                                              //tv.setText(result);//如果在这里来使用会报错                      Message msg = new Message();                       msg.what = 0x123;                       handler.sendMessage(msg);                    }                } catch (ClientProtocolException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }.start();        }




更多相关文章

  1. android获取当前运行Activity名字的方法
  2. android画任意曲线时,去除移动过程中出现莫名直线的方法
  3. Android 底部菜单栏Tab功能的几种实现方式
  4. android中Activity与service之间相互通信的实现方式
  5. Android开发包下载(包括开发所需所有安装包的下载方法与地址)
  6. java代码控制layout_Margin参数
  7. Android获取系统时间方法的总结
  8. Intent传递对象的两种方法(Serializable,Parcelable)

随机推荐

  1. android 实现静默安装、卸载
  2. Android(安卓)UI学习 - ListView (androi
  3. 用android:clipChildren来实现红心变大特
  4. Android(安卓)PackageManagerService的启
  5. Android(安卓)studio--将项目生成为jar包
  6. Android(安卓)选择器 PickerView实例,时间
  7. android删除android拦截短信并删除该条短
  8. Android(安卓)gdb调试
  9. 选项卡使用方法二(Android学习随笔十三)
  10. ndk下使用sqlite