HttpClient方式发送GET和POST请求实现和后台服务器的通信:
这里只给出了使用httpclient方式发送request所必须要经历的步骤:
以以下代码为例:
发送GET请求
(1)定义get方式要提交的数据(String name = et_username.getText().toString().trim();
String pwd = et_password.getText().toString().trim();)(括号为获取输入框的数据) 如果提交中文 要对name和pwd进行一个urlencode编码 如下:服务器URL地址+发送的数据
String path ="服务器URL地址?username="+URLEncoder.encode(name, "utf-8")+"&password="+URLEncoder.encode(pwd, "utf-8")+"";
(2)获取httpclient实例:因为httpclient是一个接口不能直接进行实例化,需用其实现子类DefaultHttpClient
DefaultHttpClient client=new DefaultHttpClient();
(3)准备get请求定义一个httpget实现get请求:
HttpGet get=new HttpGet(path);
(4)执行一个get请求 (HttpResponse就是服务器返回的内容,封装到了HttpResponse中)
HttpResponse response=client.execute(get);
(5)获取服务器返回的状态码
int code=response.getStatusLine().getStatusCode();
(6)根据状态码判断数据是否成功返回,获取服务器的数据(一流的形式返回)
if(code==200){
// 获取服务器返回的数据 流的形式返回
InputStream inputStream=response.getEntity().getContent();
//将流数据转化成字符串
(JAVA I/O流数据转换为字符串)
//展示结果弹出土司判断是否登录成功
(弹出toast)
}
发送POST请求
(1)获取输入框的数据。
String name = et_username.getText().toString().trim();
String pwd = et_password.getText().toString().trim();
(2)定义服务器url
String path ="serverURL";
(3)获取httpclient对象
DefaultHttpClient client =new DefaultHttpClient();
(4)准备parameters
List lists=new ArrayList();
(5)数据)准备NameValuePair实际上就是用户要提交到服务器的key,
value:用户输入的值:
BasicNameValuePair nameValuePair=new BasicNameValuePair("username", name);
BasicNameValuePair pwdValuePair=new BasicNameValuePair("password", pwd);
(6)将用户输入的数据(nameValuePair、pwdValuePair)加入到集合中:
lists.add(nameValuePair);
lists.add(pwdValuePair);
(7)准备entity(数据以实体的方式存储,也就是键值对)
UrlEncodedFormEntity entity=new UrlEncodedFormEntity(lists);//参数是parameters
(8)准备post请求
HttpPost post=new HttpPost(path);
(9)准备post方式提交的数据 以实体形式准备(键值对形式)
post.setEntity(entity);
(10)执行post请求 返回的数据封装到httpresponse中
HttpResponse response=client.execute(post);
(11)获取服务器返回的状态吗
int code=response.getStatusLine().getStatusCode();
(12)获取数据,转换为字符串,显示到UI
if(code==200){
//[5]获取服务器返回的数据 以流的形式返回
InputStream inputStream= response.getEntity().getContent();
//[6]将流数据转化为字符串
//[7]显示服务器返回的数据
}
注:
POST请求比GET请求要难一些,刚学习的建议按照以下步骤进行书写:
(1)、(2)、(3)、(8)、(10)、(9)、(7)、(4)、(5)、(6)、(11)、(12)
步骤还是上面的步骤,建议按照上面的顺序写,看清每一个类的返回值和所需要的参数,便可以将整个POST请求的步骤联系起来,有助于你理解和今后的使用。