Android SDK中提供的HttpClient是一个非常完善的Http客户端,它提供了对Http协议的全面支持,可以使用HTTP GET和HTTP POST。
HttpClient的一般使用如下:
(1)创建一个HttpClient
(2)实例化HTTP方法,比如PostMethod或GetMethod
(3)设置HTTP参数的键值对
(4)使用HttpClient执行HTTP调用
(5)处理HTTP响应
ps:一般使用HttpClient会访问因特网,所以要加上访问网络的权限
一.HTTP GET方法:
public void get(){
BufferReader reader = null;
try{
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI("http://code.google.com/android/"));
HttpResponse response = client.execute(request);
in = new BufferReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
String NL = System.getProperty("line.separator");
while(line = in.readLine() != null){
sb.append(line + NL);
}
}catch(IOException e){
}finally{
if(in != null){
try{
in.close();//关闭流,同时也关闭了Http链接
}catch(Exception e){
}
}
}
}
ps:GET方式的URL长度应在2048个字符以内.........
二.HTTP POST方法
public void post(){
BufferReader reader = null;
try{
HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost("http://www.xxxx/xxxx/xxx");
List<NameValuePair> postParametres = new ArrayList<NameValuePair>();
postParametres.add(new BasicNameValuePair("one","valueGoesHere"));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParametres );
request.setEntity(formEntity);
HttpResponse response = client.execute(request);
.....................//省略读取
}catch(IOException e){
}
}
实际上HTTP POST的功能比此强大的多,它既可以传递简单的键值对,也可以传递复杂的参数,如文件。HTTP POST支持另一种称为多部分POST的请求主体。使用这种POST类型,你可以发送键值对,也可以发送文件。但是在android SDK中没有提供对这种方式的支持。所以需要Common IO,Mime4j,HttpMime这三个第三方jar包。来使用这种方式
三执行多部分POST调用
InputStream in = this.getAssets().open("xxx.xml");
HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost("http://www.xxxx/xxxx/xxx");
byte[] data = IOUtils.toByteArray(in);
InputStreamBody isb = new InputStreamBody(new ByteArrayInputStream(data),"uploadFile");
StringBody sb1 = new StringBody("xxxxxxx");
MultipartEntity content = new MultipartEntity();
content .addPart("uploadFile",isb );
content .addPart("one",sb1);
request.setEntity(content );
HttpResponse response = client.execute(request);
.....................//省略读取
最后总结下,本片文章总结了使用Android Http服务的三种方法。