这几天去看面试,结果被要求写代码。各种知识点真是各种忘记啊..所以慢慢的把一些知识点给记下来。
其实在android发送HTTP请求,我觉得用HttpClient比HttpUrlConnetion方便多了,也简单多了。下面就开始吧
首先是GET请求,
1、如果有参数把参数给准备好。
List<NameValuePair> params = new ArrayList<NameValuePair>();
2、建一个HttpGet请求
HttpGet request = new HttpGet(url + "?" + param);
3、实例客户端HttpClient
HttpClient client = new DefaultHttpClient();
4、客户端发送HttpGet请求,返回HttpResponse
HttpResponse response = client.execute(request);
5、得到HttpEntity
HttpEntity entity = response.getEntity();
6、HttpEntity有两个方法
toString() 如果你服务器返回的是字符串,这样子就可以拿出来了
getContent() 返回一个InputStream(之后你想怎么搞就怎么搞了)
OVER了
public String sendByGet() {
//新建参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("method", "get"));
//UTF-8编码
String param = URLEncodedUtils.format(params, "UTF-8");
//建立一个get请求
HttpGet request = new HttpGet(url + "?" + param);
//实例化client
HttpClient client = new DefaultHttpClient();
try {
//Client执行get请求
HttpResponse response = client.execute(request);
//得到HttpEntity
HttpEntity entity = response.getEntity();
//把输入流的东东变成文件
IOUtil.input2File(entity.getContent(), filePath,"song.xml");
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
再来就是POST请求了
POST请求也差不多,
1、如果有参数把参数给准备好。
List<NameValuePair> params = new ArrayList<NameValuePair>();
2、建一个HttpPost请求
HttpPost request = new HttpPost(url);
3、给POST请求设置参数(跟GET不同就这里)
request.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
4、实例客户端HttpClient
HttpClient client = new DefaultHttpClient();
5、客户端发送HttpGet请求,返回HttpResponse
HttpResponse response = client.execute(request);
6、得到HttpEntity
HttpEntity entity = response.getEntity();
7、HttpEntity有两个方法
toString() 如果你服务器返回的是字符串,这样子就可以拿出来了
public String sendByPost() {
DefaultHttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost(url);
List<NameValuePair> params = new ArrayList<NameValuePair>();
// 或者用
// params.add(new BasicNameValuePair("", ""));
params.add(new NameValuePair() {
@Override
public String getValue() {
return "i am postMethod";
}
@Override
public String getName() {
return "value";
}
});
try {
// UTF8编码
request.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
HttpResponse resp = client.execute(request);
Log.i("http", String.valueOf(resp.getStatusLine().getStatusCode()));
// 200为成功
if (resp.getStatusLine().getStatusCode() == 200) {
// resp.getEntity只能调用一次
HttpEntity entity = resp.getEntity();
String xml = IOUtil.input2String(entity.getContent());
System.out.println(xml);
return xml;
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
就这么简单了...
积一时之跬步,臻千里之遥程