天天看點

http網絡請求

網絡請求

需要在子線程中使用網絡請求,網絡請求需要有權限

new Thread(){
    void run(){
        //網絡請求
        URL url = new URL("...");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        //配置逾時
        conn.setConnectTimeout(5000);
        conn.setReadTimeout(5000);
       if(conn.getResponseCode() == 200){
            //資料轉換
            //發送到主線程
        }
        //關閉連接配接
        conn.disconnect();
    }
}

private Handler mHandler= new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        switch (msg.what){
            case 1:
                String s = (String) msg.obj;
                mTv.setText(s);
                break;
        }

    }
};
           

權限

<uses-permission android:name="android.permission.INTERNET"/>
           
Json
public class User{
    private String name;
    private int age;
} 
           

{} 表示對象

{name:張三,age:18}
           

[] 表示數組

[{name:張三,age:18},{name:lisi,age:20}]
[1,2,3]
["abc","123"]
           
使用GsonFormat插件

plugin–>GsonFormat–安裝

用:在類中右單擊–>generate–>gsonformat–>将json格式字元串粘貼進來–>fomat–>ok

json解析

//解析json數組
JSONArray ary = new JSONArray(jsonStr);
int len = ary.length();
for(int i = 0 ; i < len ; i++){
  //擷取json對象
  JSONObject obj = ary.getJSONObject(i);
  String content = obj.getString("content");
  int id = obj.getInt("id");
  String time = obj.getString("pub_time");
  String title = obj.getString("title");
  list.add(new Diary(content,id,time,title));
 }
           

防止亂碼問題

可以對參數編碼

String title = URLEncoder.encode("我愛程式設計","UTF-8");
           

繼續閱讀