【android】HttpURLConnection 几种不同方法示例【下】
上篇和中篇介绍了通过标准java接口来实现Android应用的联网操作,但都只是简单地进行了网络的访问,但是在实际开发中,可能会运用到更复杂的联网操作。Apache提供了HttpClient, 它对java.net中的类做了封装和抽象,更适合我们在Android上开发联网应用。
下面将分别使用Get和Post方式请求一个网页:
我们先来看看HttpClient中如何使用Get方式获取数据,这里需要使用HttpGet来构建一个Get方式的Http请求,然后通过HttpClient来执行这个请求,HttpResponse在接收这个请求后给出响应,最后通过"HttpResponse.getStatusLine().getStatusCode()"来判断请求是否成功,并处理。具体实现如下:
- HttpClient接口中用Get方式传递参数
package HA.httpurl; import java.io.IOException; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.ParseException; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.*; //HttpClient接口中用Get方式传递参数 public class HttpClientGet extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); // setContentView(R.layout.http); TextView mTextView = new TextView(this); ScrollView scrollView = new ScrollView(this); String httpUrl = "http://www.xiaonei.com"; HttpGet httpRequest = new HttpGet(httpUrl); try { HttpClient httpclient = new DefaultHttpClient(); HttpResponse httpResponse = httpclient.execute(httpRequest); if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { String strResult = EntityUtils.toString(httpResponse.getEntity()); mTextView.setText(strResult); scrollView.addView(mTextView); this.setContentView(scrollView); } else { mTextView.setText("请求错误"); } } catch (ClientProtocolException e) { // TODO Auto-generated catch block mTextView.setText(e.getMessage().toString()); } catch (ParseException e) { // TODO Auto-generated catch block mTextView.setText(e.getMessage().toString()); } catch (IOException e) { // TODO Auto-generated catch block mTextView.setText(e.getMessage().toString()); } // Button button_back = (Button)this.findViewById(R.id.Button_Back); // button_back.setOnClickListener(new OnClickListener(){ // // public void onClick(View v) { // // TODO Auto-generated method stub // Intent intent = new Intent(); // intent.setClass(HttpClientGet.this, Activity01.class); // startActivity(intent); // HttpClientGet.this.finish(); // } // }); } }
- HttpClient接口中用Post方式传递参数
package HA.httpurl; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; import org.apache.http.ParseException; 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.util.EntityUtils; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.*; //HttpClient接口中用Post方式传递参数 public class HttpClientPost extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); // setContentView(R.layout.http); TextView mTextView = new TextView(this); ScrollView scrollView = new ScrollView(this); String httpUrl = "http://3g.renren.com/login.do"; HttpPost httpRequest = new HttpPost(httpUrl); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("email","******")); params.add(new BasicNameValuePair("&password","*******")); try { HttpEntity httpentity = new UrlEncodedFormEntity(params, "UTF-8"); httpRequest.setEntity(httpentity); HttpClient httpclient = new DefaultHttpClient(); HttpResponse httpResponse = httpclient.execute(httpRequest); if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { String strResult = EntityUtils.toString(httpResponse.getEntity()); mTextView.setText(strResult); scrollView.addView(mTextView); this.setContentView(scrollView); } else { mTextView.setText("请求错误!"); } } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block mTextView.setText(e.getMessage().toString()); } catch (ClientProtocolException e) { // TODO Auto-generated catch block mTextView.setText(e.getMessage().toString()); } catch (ParseException e) { // TODO Auto-generated catch block mTextView.setText(e.getMessage().toString()); } catch (IOException e) { // TODO Auto-generated catch block mTextView.setText(e.getMessage().toString()); } // // Button button_back = (Button)this.findViewById(R.id.Button_Back); // button_back.setOnClickListener(new OnClickListener(){ // // public void onClick(View v) { // // TODO Auto-generated method stub // Intent intent = new Intent(); // intent.setClass(HttpClientPost.this,Activity01.class); // startActivity(intent); // HttpClientPost.this.finish(); // } // }); } }