使用第三方框架实现异步的HttpClient
2016-04-21 22:42
429 查看
这篇博客将介绍使用第三方框架实现异步的HttpClient
首先到http://download.csdn.net/detail/u010105970/9498649中下载异步的HttpClient框架android-async-http-master,下载完成后会获得一个压缩包
使用eclipse创建一个android工程,并且将压缩包解压,解压后进入com目录下
将loopj文件夹拷贝到创建好的android工程中的com文件夹中
核心代码,其实就是修改MainActivity.java如下,其他部分的代码和我的上一篇博客使用HttpClient实现Post请求和Get请求中的代码一样
package com.fyt.ansydemo;
import java.net.URLEncoder;
import org.apache.http.Header;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;
public class MainActivity extends Activity {
private EditText et_username;
private EditText et_password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得布局文件上的用户名输入框和密码输入框
et_username = (EditText)findViewById(R.id.et_username);
et_password = (EditText)findViewById(R.id.et_password);
}
//使用get方式发送数据到服务器
public void get(View view) {
//获得用户输入的用户名和密码
final String username = et_username.getText().toString();
final String password = et_password.getText().toString();
//设置网址
//设置网址
final String url = "http://192.168.0.101:8080/WebProject/servlet/LoginServlet" +
"?username=" + URLEncoder.encode(username) + "&" + "password=" + password;
//创建异步的HttpClient
AsyncHttpClient ahc = new AsyncHttpClient();
//发送get请求提交数据
ahc.get(url, new MyResponseHandler());
}
//使用post方式发送数据到服务器
public void post(View view) {
//获得用户输入的用户名和密码
final String username = et_username.getText().toString();
final String password = et_password.getText().toString();
//设置url地址
String url = "http://192.168.0.101:8080/WebProject/servlet/LoginServlet";
//创建异步httpclient
AsyncHttpClient ahc = new AsyncHttpClient();
//发送post请求提交数据
//把要提交的数据封装至RequestParams对象
RequestParams params = new RequestParams();
params.add("username", username);
params.add("password", password);
ahc.post(url, params, new MyResponseHandler());
}
//创建一个内部类
class MyResponseHandler extends AsyncHttpResponseHandler {
//请求服务器成功时,此方法被调用
@Override
public void onSuccess(int statusCode, Header[] headers,
byte[] responseBody) {
//创建吐司对话框用于显示提示信息
Toast.makeText(MainActivity.this, new String(responseBody), Toast.LENGTH_SHORT).show();
}
//请求失败此方法调用
@Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) {
Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_SHORT).show();
}
}
}
首先到http://download.csdn.net/detail/u010105970/9498649中下载异步的HttpClient框架android-async-http-master,下载完成后会获得一个压缩包
使用eclipse创建一个android工程,并且将压缩包解压,解压后进入com目录下
将loopj文件夹拷贝到创建好的android工程中的com文件夹中
核心代码,其实就是修改MainActivity.java如下,其他部分的代码和我的上一篇博客使用HttpClient实现Post请求和Get请求中的代码一样
package com.fyt.ansydemo;
import java.net.URLEncoder;
import org.apache.http.Header;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;
public class MainActivity extends Activity {
private EditText et_username;
private EditText et_password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得布局文件上的用户名输入框和密码输入框
et_username = (EditText)findViewById(R.id.et_username);
et_password = (EditText)findViewById(R.id.et_password);
}
//使用get方式发送数据到服务器
public void get(View view) {
//获得用户输入的用户名和密码
final String username = et_username.getText().toString();
final String password = et_password.getText().toString();
//设置网址
//设置网址
final String url = "http://192.168.0.101:8080/WebProject/servlet/LoginServlet" +
"?username=" + URLEncoder.encode(username) + "&" + "password=" + password;
//创建异步的HttpClient
AsyncHttpClient ahc = new AsyncHttpClient();
//发送get请求提交数据
ahc.get(url, new MyResponseHandler());
}
//使用post方式发送数据到服务器
public void post(View view) {
//获得用户输入的用户名和密码
final String username = et_username.getText().toString();
final String password = et_password.getText().toString();
//设置url地址
String url = "http://192.168.0.101:8080/WebProject/servlet/LoginServlet";
//创建异步httpclient
AsyncHttpClient ahc = new AsyncHttpClient();
//发送post请求提交数据
//把要提交的数据封装至RequestParams对象
RequestParams params = new RequestParams();
params.add("username", username);
params.add("password", password);
ahc.post(url, params, new MyResponseHandler());
}
//创建一个内部类
class MyResponseHandler extends AsyncHttpResponseHandler {
//请求服务器成功时,此方法被调用
@Override
public void onSuccess(int statusCode, Header[] headers,
byte[] responseBody) {
//创建吐司对话框用于显示提示信息
Toast.makeText(MainActivity.this, new String(responseBody), Toast.LENGTH_SHORT).show();
}
//请求失败此方法调用
@Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) {
Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_SHORT).show();
}
}
}
相关文章推荐
- HTTP请求响应过程以及与HTTPS区别
- Linux网络相关查询脚本
- 网络编程——多线程与异步套接字编程(API) 学习
- Android Mina 与Linux TCP通信-1
- 使用HttpClient实现Post请求和Get请求
- python的requests在网络请求中添加cookies参数
- udp协议案例
- http工作原理小示例
- 网络知识
- http和https的区别
- java IM基础(一):建立tcp连接
- Android学习(35) -- smart-image-view 获取网络图片
- CentOS 6.5使用Corosync + pacemaker实现httpd服务的高可用
- CentOS 6.5使用Corosync + pacemaker实现httpd服务的高可用
- Netty_使用http协议,post&get方式
- 简单介绍基于WEB开发的HTTP协议
- Android网络开源库-Retrofit(二) 文件上传、下载及进度监听
- [firefox+plug-n-hack]轻松地配置burpsuite代理https流量 - 20160318
- Android学习(34) -- 带缓存的网络图片下载
- iOS网络——NSURLCache设置网络请求缓存,NSUrlCache