進行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();
}
}
最後傳回的結果如截圖所示:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DM4MTNzYDN2EzMxcDM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
。成功接收到從伺服器傳回的JSON資料。
如果需要傳回的資料為XML,隻要重新拼裝URL即可。如:"http://apis.juhe.cn/mobile/get?phone=13429667914&key=9719c91bd4ac2647c67c6cd067b5cb8e&dtype=xml";最後傳回的結果為XML,截圖如下:
。
最後開發者根據需要,可以對XML和JSON進行解析,完成業務需求。