httpclient的使用模式:
1. 建立一個httpclent
2.執行個體化新的http方法,比如postmethod 或 getmethod
3.設定http參數名稱/值
4.使用httpclent執行http調用
5.處理http響應
import java.io.ioexception;
import java.io.inputstream;
import java.net.urlencoder;
import java.util.arraylist;
import java.util.list;
import org.apache.http.httpentity;
import org.apache.http.httpresponse;
import org.apache.http.namevaluepair;
import org.apache.http.statusline;
import org.apache.http.client.clientprotocolexception;
import org.apache.http.client.httpclient;
import org.apache.http.client.entity.urlencodedformentity;
import org.apache.http.client.methods.httpget;
import org.apache.http.client.methods.httppost;
import org.apache.http.impl.client.defaulthttpclient;
import org.apache.http.message.basicnamevaluepair;
import com.itheima.httpclient.utils.utils;
import android.os.bundle;
import android.os.handler;
import android.os.message;
import android.app.activity;
import android.view.menu;
import android.view.view;
import android.widget.edittext;
import android.widget.toast;
public class mainactivity extends activity {
handler handler = new handler(){
@override
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 get(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();
thread t = new thread(){
@override
public void run() {
string path = "http://192.168.13.13/web/servlet/checklogin?name=" + urlencoder.encode(name) + "&pass=" + pass;
//使用httpclient架構做get方式送出
//1.建立httpclient對象
httpclient hc = new defaulthttpclient();
//2.建立httpget對象,構造方法的參數就是網址
httpget hg = new httpget(path);
//3.使用用戶端對象,把get請求對象發送出去
try {
httpresponse hr = hc.execute(hg);
//拿到響應頭中的狀态行
statusline sl = hr.getstatusline();
if(sl.getstatuscode() == 200){
//拿到響應頭的實體
httpentity he = hr.getentity();
//拿到實體中的内容,其實就是伺服器傳回的輸入流
inputstream is = he.getcontent();
string text = utils.gettextfromstream(is);
//發送消息,讓主線程重新整理ui顯示text
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 post(view v){
string path = "http://192.168.13.13/web/servlet/checklogin";
//1.建立用戶端對象
//2.建立post請求對象
httppost hp = new httppost(path);
//封裝form表單送出的資料
basicnamevaluepair bnvp = new basicnamevaluepair("name", name);
basicnamevaluepair bnvp2 = new basicnamevaluepair("pass", pass);
list<basicnamevaluepair> parameters = new arraylist<basicnamevaluepair>();
//把basicnamevaluepair放入集合中
parameters.add(bnvp);
parameters.add(bnvp2);
//要送出的資料都已經在集合中了,把集合傳給實體對象
urlencodedformentity entity = new urlencodedformentity(parameters, "utf-8");
//設定post請求對象的實體,其實就是把要送出的資料封裝至post請求的輸出流中
hp.setentity(entity);
//3.使用用戶端發送post請求
httpresponse hr = hc.execute(hp);
if(hr.getstatusline().getstatuscode() == 200){
inputstream is = hr.getentity().getcontent();
}
utils方法:
import java.io.bytearrayoutputstream;
public class utils {
public static string gettextfromstream(inputstream is){
byte[] b = new byte[1024];
int len = 0;
bytearrayoutputstream bos = new bytearrayoutputstream();
try {
while((len = is.read(b)) != -1){
bos.write(b, 0, len);
string text = new string(bos.tobytearray());
bos.close();
return text;
} catch (ioexception e) {
// todo auto-generated catch block
e.printstacktrace();
return null;
}
轉載:http://blog.csdn.net/chaoyu168/article/details/50964727