Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android通信HttpClient

android通信HttpClient

編輯:關於Android編程

下面為使用HttpClient的一個登錄服務器的小例子

package com.liang.logindemo;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
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.entity.BufferedHttpEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;


public class MainActivity3 extends ActionBarActivity {
    private EditText et_userName;
    private EditText et_password;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_userName= (EditText) findViewById(R.id.et_userName);
        et_password= (EditText) findViewById(R.id.et_password);
    }

    public void login(View view) {
        String str=et_userName.getText().toString();
        try {
            str=URLEncoder.encode(str,"utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        final String userName=str;

        final String password=et_password.getText().toString();

        //在子線程中訪問網絡
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    final boolean isSuccess =loginByPost(userName,password);
                    //final boolean isSuccess = loginByGet(userName,password);

                    //使用此方法可不使用Handler通知主線程,方法內所做操作由主線程完成
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            if(isSuccess){
                                Toast.makeText(MainActivity3.this,"成功了!!!",Toast.LENGTH_SHORT).show();
                            }else{
                                Toast.makeText(MainActivity3.this,"失敗了!!!",Toast.LENGTH_SHORT).show();
                            }
                        }
                    });
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

    /**
     * HttpClient通過GET請求方式訪問服務器
     * @param userName,password
     * @return
     * @throws Exception
     */
    private Boolean loginByGet(String userName,String password) throws Exception{
        //服務器地址
        String url="http://192.168.1.140:8080/Login/servlet/Login";
        String data="?userName="+userName + "&password="+password;
        HttpClient client=null;

        //定義一個客戶端
        client = new DefaultHttpClient();
        //定義一個get請求
        HttpGet get = new HttpGet(url+data);
        //執行get請求,獲得響應對象
        HttpResponse response = client.execute(get);
        //獲得響應狀態碼
        int code = response.getStatusLine().getStatusCode();
        //返回結果
        if(code==200) {
            //獲得響應內容
            InputStream is = response.getEntity().getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            String text = reader.readLine();
            reader.close();
            is.close();
            return "SUCCESS".equals(text) ? true : false;
        }
        if(client!=null){
            //關閉連接
            client.getConnectionManager().shutdown();
        }
        return false;
    }

    /**
     *HttpClient通過POST請求方式訪問服務器
     * @param userName
     * @param password
     * @return
     * @throws Exception
     */
    boolean loginByPost(String userName,String password) throws Exception{
        //服務器地址
        String url="http://192.168.1.140:8080/Login/servlet/Login";
        HttpClient client=null;

        //定義一個客戶端
        client = new DefaultHttpClient();
        //定義一個Post請求
        HttpPost post = new HttpPost(url);
        //設置請求數據
        List list = new ArrayList();
        list.add(new BasicNameValuePair("userName",userName));
        list.add(new BasicNameValuePair("password",password));
        UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list);
        post.setEntity(entity);
        //執行get請求,獲得響應對象
        HttpResponse response = client.execute(post);
        //獲得響應狀態碼
        int code = response.getStatusLine().getStatusCode();
        //返回結果
        if(code==200) {
            //獲得響應內容
            InputStream is = response.getEntity().getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            String text = reader.readLine();
            reader.close();
            is.close();
            return "SUCCESS".equals(text) ? true : false;
        }
        if(client!=null){
            //關閉連接
            client.getConnectionManager().shutdown();
        }
        return false;

    }
}

需要清單文件中添加網絡訪問權限


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved