Android網絡編程之Http請求服務器數據(GET方式)

 進行Android應用開發,其中不得不使用到網絡編程,最基本的就是向服務器發送Http請求,並接收從服務器返回的數據,該類數據一般爲JSON或XML格式。

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

[java] view plain copy
 print?
  1. public class MainActivity extends Activity {  
  2.   
  3.     private TextView text;  
  4.     private String url = "http://apis.juhe.cn/mobile/get?phone=13429667914&key=9719c91bd4ac2647c67c6cd067b5cb8e";//向服務器請求的url.  
  5.     private Handler handler = new Handler();//使用Handler更新UI,因爲網絡操作是在子線程中進行的,子線程不能更新UI,所以只能使用Handler機制;  
  6.   
  7.     @Override  
  8.     protected void onCreate(Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState);  
  10.         setContentView(R.layout.activity_main);  
  11.         text = (TextView) findViewById(id_text);  
  12.   
  13.         //新建線程Thread,開始網絡操作。  
  14.         new Thread() {  
  15.             @Override  
  16.             public void run() {  
  17.                 try {  
  18.                     URL httpUrl = new URL(url);  
  19.                     HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();//與服務器建立連接;  
  20.                     conn.setReadTimeout(5000);  
  21.                     conn.setRequestMethod("GET");//設置請求方式爲GET  
  22.   
  23.                     final StringBuffer sb = new StringBuffer();//把獲取的數據不斷存放到StringBuffer中;  
  24.                     BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));//使用reader向輸入流中讀取數據,並不斷存放到StringBuffer中;  
  25.                     String line;  
  26.                     while ((line = reader.readLine()) != null) {//只要還沒有讀取完,就不斷讀取;  
  27.                         sb.append(line);//在StringBuffer中添加;  
  28.                     }  
  29.                     handler.post(new Runnable() {//使用Handler更新UI;當然這裏也可以使用sendMessage();handMessage()來進行操作;  
  30.                         @Override  
  31.                         public void run() {  
  32.                             text.setText(sb.toString());//StringBuffer轉化爲String輸出;  
  33.                         }  
  34.                     });  
  35.                 } catch (MalformedURLException e) {  
  36.                     e.printStackTrace();  
  37.                 } catch (IOException e) {  
  38.                     e.printStackTrace();  
  39.                 }  
  40.             }  
  41.         }.start();  
  42.     }  
  43. }  
最後返回的結果如截圖所示:

。成功接收到從服務器返回的JSON數據。


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

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


github主頁:https://github.com/chenyufeng1991  。歡迎大家訪問!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章