Httpclient的Get请求和Post请求

在移动互联中的网络请求方式多种多样,其中有一种apache公司提供的网络请求方法,HttpClient ,使用起来还是比较简单方便的,今天就简单的说一下他的两种请求方式。

第一种,Get请求方法

代码如下:

public class MainActivity extends Activity {
	private ListView listView;
	private String APPKEY="cc246bf239ff0954a939d0eebbbbe8c8";
	private String top="http://v.juhe.cn/toutiao/index?type=top&key="+APPKEY;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		listView=(ListView) findViewById(R.id.listView);
		getDataFromNet();
		
		
	}

	private void getDataFromNet() {
		new Thread(){
			public void run() {
				//创建Httpclient对象
				DefaultHttpClient client = new DefaultHttpClient();
				//创建请求方法
				HttpGet get = new HttpGet(top);
				//执行方法请求数据
				try {
					HttpResponse response = client.execute(get);
					//获得状态行
					StatusLine line = response.getStatusLine(); 
					//获得状态码
					int code = line.getStatusCode();
					//判断
					if(code==200){
						//得到内容实体
						HttpEntity entity = response.getEntity();
						//得到具体内容
						InputStream content = entity.getContent();
						//得到流之后转换成Json串,然后解析就行了
						
					}
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} 
				
			};
		}.start();
	}

	

}
代码很简单,下面说一下post请求,上面的get请求使用拼接字符串的方式,post则是用流的方式来请求网络的,代码如下:

public class MainActivity extends Activity {
	private ListView listView;
	private ArrayList
   
   
    
     list;
	private Handler handler=new Handler(){
		public void handleMessage(android.os.Message msg) {
			listView.setAdapter(new ArrayAdapter
    
    
     
     (MainActivity.this, android.R.layout.simple_list_item_1, list));
		};
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		listView=(ListView) findViewById(R.id.listView);
		getData();
		
		
		
	}

	private void getData() {
		new Thread(){
			public void run() {
				try {
					//创建出HttpClient对象
					DefaultHttpClient httpClient = new DefaultHttpClient();
					//创建出请求方法
					HttpPost httpPost = new HttpPost(Url.POST_TEST);
					//创建出一个集合用来存放数据
					ArrayList
     
     
      
       list=new ArrayList
      
      
       
       ();
					//把要请求的参数封装到BasicNameValuePair类的对象
					BasicNameValuePair nameValuePair = new BasicNameValuePair("type", "junshi");
					BasicNameValuePair nameValuePair2 = new BasicNameValuePair("key", "2f41498b35e69877fc56dc96776e5d1f");
					//把对象存入集合
					list.add(nameValuePair);
					list.add(nameValuePair2);
					//把集合放入实体
					UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list);
					//执行
					httpPost.setEntity(entity);
					//执行post方法,请求网络数据
					HttpResponse response = httpClient.execute(httpPost);
					//获得状态行
					StatusLine line = response.getStatusLine();
					//获得状态码
					int i = line.getStatusCode();
					//判断
					if(i==200){
						//得到内容实体
						HttpEntity httpEntity = response.getEntity();
						//得到具体内容
						InputStream content = httpEntity.getContent();
						String json = inputToString(content);
						parseJson(json);
						handler.sendEmptyMessage(0);
					}
					
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}


		}.start();
		
	}
	

	private String inputToString(InputStream content) {
		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
		int len=0;
		byte[] bt=new byte[1024];
		try {
			while((len=content.read(bt))!=-1){
				outputStream.write(bt, 0, len);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return outputStream.toString();
		
	};
	

	private void parseJson(String json) {
		list = new ArrayList
       
       
         (); try { JSONObject jsonObject = new JSONObject(json); JSONObject jsonObject2 = jsonObject.getJSONObject("result"); JSONArray data = jsonObject2.getJSONArray("data"); for (int i = 0; i < data.length(); i++) { JSONObject jsonObject3 = data.getJSONObject(i); String title = jsonObject3.getString("title"); list.add(title); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 
       
      
      
     
     
    
    
   
   
一般我们请求网络都是使用get请求,而有的时候需要对数据进行保密就要使用post请求了。各位根据情况自己来判断使用场景吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值