天天看點

Android網絡程式設計之Http請求伺服器資料(GET方式)

        進行Android應用開發,其中不得不使用到網絡程式設計,最基本的就是向伺服器發送Http請求,并接收從伺服器傳回的資料,該類資料一般為JSON或XML格式。

        向伺服器進行請求資料一般有GET、POST兩種方式,兩者基本類似,以GET居多。本文先讨論使用GET方式向聚合資料API發送請求,以獲得手機号碼歸屬地的資訊。歸屬地查詢的接口的請求示例為:http://apis.juhe.cn/mobile/get?phone=13429667914&key=您申請的KEY。預設傳回的格式為JSON。最後把傳回結果顯示在TextView上。直接上代碼:

public class MainActivity extends Activity {

    private TextView text;
    private String url = "http://apis.juhe.cn/mobile/get?phone=13429667914&key=9719c91bd4ac2647c67c6cd067b5cb8e";//向伺服器請求的url.
    private Handler handler = new Handler();//使用Handler更新UI,因為網絡操作是在子線程中進行的,子線程不能更新UI,是以隻能使用Handler機制;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = (TextView) findViewById(id_text);

        //建立線程Thread,開始網絡操作。
        new Thread() {
            @Override
            public void run() {
                try {
                    URL httpUrl = new URL(url);
                    HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();//與伺服器建立連接配接;
                    conn.setReadTimeout(5000);
                    conn.setRequestMethod("GET");//設定請求方式為GET

                    final StringBuffer sb = new StringBuffer();//把擷取的資料不斷存放到StringBuffer中;
                    BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));//使用reader向輸入流中讀取資料,并不斷存放到StringBuffer中;
                    String line;
                    while ((line = reader.readLine()) != null) {//隻要還沒有讀取完,就不斷讀取;
                        sb.append(line);//在StringBuffer中添加;
                    }
                    handler.post(new Runnable() {//使用Handler更新UI;當然這裡也可以使用sendMessage();handMessage()來進行操作;
                        @Override
                        public void run() {
                            text.setText(sb.toString());//StringBuffer轉化為String輸出;
                        }
                    });
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }
}
           

最後傳回的結果如截圖所示:

Android網絡程式設計之Http請求伺服器資料(GET方式)

。成功接收到從伺服器傳回的JSON資料。

      如果需要傳回的資料為XML,隻要重新拼裝URL即可。如:"http://apis.juhe.cn/mobile/get?phone=13429667914&key=9719c91bd4ac2647c67c6cd067b5cb8e&dtype=xml";最後傳回的結果為XML,截圖如下:

Android網絡程式設計之Http請求伺服器資料(GET方式)

      最後開發者根據需要,可以對XML和JSON進行解析,完成業務需求。

繼續閱讀