在移动互联中的网络请求方式多种多样,其中有一种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();
}
}
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(); } } }