這篇博客將介紹使用第三方框架實現異步的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();
}
}
}