传统方式获取网络文本见上一篇博客,代码较为繁杂!
AsyncHttpClient是一个开源项目, 可以自动创建新线程联网, 不论成功或失败都会在主线程执行回调函数!
示例代码:
package com.itheima.nettext;
import org.apache.http.Header;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.TextHttpResponseHandler;
public class AsyncActivity extends Activity {
private EditText et;
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et = (EditText) findViewById(R.id.et);
tv = (TextView) findViewById(R.id.tv);
}
public void go(View v) {
//需要导入com.loopj.android.http这个包,该包源码去github.com下载;关键字:android-async-http-master
AsyncHttpClient client=new AsyncHttpClient();
String url=et.getText().toString().trim();
client.get(url, new TextHttpResponseHandler() {//TextHttpResponseHandler是专门处理文本数据的类;get方式获取数据;
//成功会执行该函数;
public void onSuccess(int statusCode, Header[] headers, String responseString) {
tv.setText(responseString);//responseString是服务器返回来的数据;
}
//失败会执行这个函数;
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
Toast.makeText(getApplicationContext(), "服务器忙!!! " + statusCode, Toast.LENGTH_SHORT).show();
}
});
}
}