android 学习随笔十一(网络:HttpClient框架)

1、使用HttpClient框架发送get、post请求

google收集apache提供的一个发送Http请求框架

public class Tools {

    public static String getTextFromStream(InputStream is){
byte[] b = new byte[1024];
int len;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
while((len = is.read(b)) != -1){
bos.write(b, 0, len);
}
//把字节数组输出流转换成字节数组,然后用字节数组构造一个字符串
String text = new String(bos.toByteArray());
return text;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null; }
}
public class MainActivity extends Activity {

    Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
Toast.makeText(MainActivity.this, (String)msg.obj, 0).show();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}   //get请求
public void click1(View v){
//获取用户输入的账号密码
EditText et_name = (EditText) findViewById(R.id.et_name);
EditText et_pass = (EditText) findViewById(R.id.et_pass); String name = et_name.getText().toString();
String pass = et_pass.getText().toString(); final String path = "http://169.254.244.136/Web2/servlet/Login?name=" + URLEncoder.encode(name) + "&pass=" + pass; Thread t = new Thread(){
@Override
public void run() {
//使用httpClient框架提交
//1.创建client对象
HttpClient client = new DefaultHttpClient();
//2.创建get请求对象
HttpGet get = new HttpGet(path);
try {
//3.使用client发送get请求
HttpResponse response = client.execute(get);
//获取状态行
StatusLine line = response.getStatusLine();
//获取状态码
int code = line.getStatusCode();
if(code == 200){
//获取实体
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
String text = Tools.getTextFromStream(is); Message msg = handler.obtainMessage();
msg.obj = text;
handler.sendMessage(msg);
} } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
t.start();
}
//Post请求
public void click2(View v){
//获取用户输入的账号密码
EditText et_name = (EditText) findViewById(R.id.et_name);
EditText et_pass = (EditText) findViewById(R.id.et_pass); final String name = et_name.getText().toString();
final String pass = et_pass.getText().toString(); final String path = "http://169.254.244.136/Web2/servlet/Login"; Thread t = new Thread(){
@Override
public void run() {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(path); //把要提交的数据封装至post中
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
//arg0:表单的名字
//arg1:表单中的值
BasicNameValuePair bnvp1 = new BasicNameValuePair("name", name);
BasicNameValuePair bnvp2 = new BasicNameValuePair("pass", pass);
//把BasicNameValuePair对象放入集合
parameters.add(bnvp1);
parameters.add(bnvp2);
//创建实体对象
UrlEncodedFormEntity entity = null;
try {
//把集合对象封装到实体中
entity = new UrlEncodedFormEntity(parameters, "utf-8");
} catch (Exception e1) {
e1.printStackTrace();
}
//把实体对象封装至post对象中
post.setEntity(entity);
try {
HttpResponse response = client.execute(post); if(response.getStatusLine().getStatusCode() == 200){
InputStream is = response.getEntity().getContent();
String text = Tools.getTextFromStream(is); Message msg = handler.obtainMessage();
msg.obj = text;
handler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
t.start();
} }
上一篇:spring中InitializingBean接口使用理解


下一篇:实验四——使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用