編輯:關於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; } }
前言今天有時間來繼續寫寫屬性動畫。簡介眾所周知,屬性動畫是Android3.0版本開始的,一個東西的推出肯定是有它的道理的,那為什麼前面已經有逐幀和補間動畫了還要推出屬性
JsBridge簡介Android JsBridge 就是用來在 Android app的原生 java 代碼與 javascript 代碼中架設通信(調用)橋梁的輔助工
鑒於谷歌最新推出的Android Studio備受開發者的推崇,所以也跟著體驗一下。一、介紹Android Studio Android Studio 是一個A
前言相信大家都知道知道,在AndroidOS中,提供了五中數據存儲方式,分別是:ContentProvider存儲、文件存儲、SharedPreference存儲、SQL