標籤:
首先定義布局檔案,及點擊事件
public class MainActivity extends Activity { private final int MSG_HELLO = 0; private Handler mHandler; private Button btnSubmit; private EditText txtUsername, txtPassword; private TextView loginResult; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnSubmit = (Button) findViewById(R.id.btnSubmit); txtUsername = (EditText) findViewById(R.id.username); txtPassword = (EditText) findViewById(R.id.password); loginResult = (TextView) findViewById(R.id.loginResult); btnSubmit.setOnClickListener(new OnClickLoginListener()); } class OnClickLoginListener implements View.OnClickListener { @Override public void onClick(View view) { String username = txtUsername.getText().toString(); String password = txtPassword.getText().toString(); // 登入請求地址 String url = "http://172.16.18.10:8080/Home/Login"; // 參數封裝 Map<String ,String> params = new HashMap<String, String>(); params.put("username",username); params.put("password",password); try { // 請求登入 String result = HttpUtils.postRequest(url, params); // 講請求結果轉換成 JSON 對象 JSONObject jsonObject = new JSONObject(result); String message = jsonObject.getString("message"); int status = jsonObject.getInt("status"); // 登入成功 if(status == 1) { Log.i("Login","登入成功!"); Intent it = new Intent(MainActivity.this, MainActivity2.class); Bundle bundle = new Bundle(); bundle.putString("name", message+",username:"+ username +" password:"+password); it.putExtras(bundle); // it.putExtra(“test”, "mobile”); startActivity(it); // startActivityForResult(it,REQUEST_CODE); finish(); } else { loginResult.setText(message); } } catch (Exception e) { e.printStackTrace(); } } }}View Code
HttpUtils
public class HttpUtils { /* * @function HttpPost 請求 * @param params 請求參數 * @return 伺服器響應字串 * @throws Exception */ public static String postRequest(final String url, final Map<String,String> rawParams ) throws Exception { FutureTask<String> task = new FutureTask<String>(new Callable<String>() { @Override public String call() throws Exception { // 建立一個預設的HTTP用戶端 DefaultHttpClient httpClient = new DefaultHttpClient(); // 建立 HttpPost 對象 HttpPost post = new HttpPost(url); // 如果傳遞參數個數比較多,可以對傳遞的參數進行封裝 List<NameValuePair> params = new ArrayList<NameValuePair>(); for (String key : rawParams.keySet()) { // 封裝請求參數 params.add(new BasicNameValuePair(key,rawParams.get(key))); } // 佈建要求參數 post.setEntity(new UrlEncodedFormEntity(params, "gbk")); // 發送 POST 請求 HttpResponse httpResponse = httpClient.execute(post); // 如果伺服器成功地返迴響應 if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { String result = EntityUtils.toString(httpResponse.getEntity()); return result; } return null; } }); new Thread(task).start(); return task.get(); } /* * @function 下載一個圖片 * @param imgPath 圖片 * @return Bitmap 對象 * @throws Exception */ public static Bitmap DownloadImage(String imgPath) throws Exception { Bitmap bitmap = null; HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(imgPath); HttpResponse httpResponse = null; try { httpResponse = httpClient.execute(httpGet); if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { byte[] data = EntityUtils.toByteArray(httpResponse.getEntity()); // 得到一個Bitmap對象,並且為了使其在post內部可以訪問,必須聲明為final bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); return bitmap; } } catch (Exception e) { e.printStackTrace(); } return bitmap; }}View Code
Android 子線程請求ASP.NET後台