編輯:關於android開發
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){ 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"; //1.創建客戶端對象 HttpClient hc = new DefaultHttpClient(); //2.創建post請求對象 HttpPost hp = new HttpPost(path); //封裝form表單提交的數據 BasicNameValuePair bnvp = new BasicNameValuePair("name", name); BasicNameValuePair bnvp2 = new BasicNameValuePair("pass", pass); Listparameters = new ArrayList (); //把BasicNameValuePair放入集合中 parameters.add(bnvp); parameters.add(bnvp2); try { //要提交的數據都已經在集合中了,把集合傳給實體對象 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(); 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(); } }
import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; 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; } }
Android快樂貪吃蛇游戲實戰項目開發教程-03虛擬方向鍵(二)繪制一個三角形,android-03該系列教程概述與目錄:http://www.cnblogs.com/
【首發】AndroidStudio配置JavaCV環境 由於最近參加一個比賽需要用到人臉識別,但賽方限制使用第三方服務商提供的API雲服務調用,因此想到了
一些常用的UI控件,常用UI控件讓你的 EditText 全部清除: 網址:https://github.com/MrFuFuFu/ClearEditText
TextView的API 中文文檔中說明了它的結構: 結構 java.lang.Object android.view.View andro
Android開發3:Intent、Bundle的使用和ListView