使用Http服务

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服务的三种方法。

你可能感兴趣的:(使用Http服务)