2024年3月13日发(作者:)
第25讲 网络通信(2)—HttpClient
一、HttpClient
为了更好的处理向web站点的请求,包括处理Session、Cookie等细节问题,Apache开源组
织提供了一个HttpClient项目(HttpClient就是一个增强版本的HttpURLConnection),扩展
了HttpURLConnection的功能,Android将这个HttpClient所在的包集成了进来,较之
HttpURLConnection,采用HttpClient发送请求,接收响应更为简单。
例:修改上面的Android客户端程序,采用HttpClient来发送GET和POST请求。
先创建一个能将InputStream转换成一个字节数组的工具类:
public class StreamUtil {
public static byte[] convertStreamToByte(InputStream in){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte [] buffer = new byte[1024];
int len =0;
try {
while((len=(buffer))!=-1){
(buffer,0,len);
}
byte [] result = Array();
return result;
} catch (IOException e) {
// TODO Auto-generated catch block
tackTrace();
}
return null;
}
}
(1) 发送GET请求
public int login_HttpClient_Get(String username ,String password){
String baseURL =
"192.168.101.62:8080/LoginDemoServer/servlet/LoginServlet";
String path = baseURL+"?username="+username+"&password="+password;
try {
的客户端
发送出去
HttpClient client = new DefaultHttpClient(); //创建一个浏览器
HttpGet httpGet = new HttpGet(path); //创建一个请求对象
HttpResponse httpResponse = e(httpGet); //将请求
if(tusLine().getStatusCode()==200){
Log.i("test", "网络连接成功,采用HttpClient的get请求");
//进一步判断,返回回来的字符串是
InputStream in =ity().getContent(); //
得到服务器响应的输入流
byte buffer[] = tStreamToByte(in);
String result = new String(buffer).trim(); //.trim()去掉字
符串前后空格换行等无用的字符
Log.i("test", result+"--------------");
if(("success"))
{
Log.i("test", "登陆成功");
return LOGINSUCCESS;
}
else{
Log.i("test", "用户名密码错误");
return LOGINFAILURE;
}
}
else{
//连接失败
Log.i("test", "网络连接失败");
return NETFAILURE;
}
} catch (Exception e) {
// TODO Auto-generated catch block
tackTrace();
}


发布评论