溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android中怎么通過 Http協(xié)議訪問網(wǎng)絡(luò)

發(fā)布時間:2021-06-28 16:43:28 來源:億速云 閱讀:103 作者:Leah 欄目:移動開發(fā)

Android中怎么通過 Http協(xié)議訪問網(wǎng)絡(luò),相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

HTTPCONNECTION

由于網(wǎng)絡(luò)連接是耗時操作不能在UI線程操作,一般通過Handler獲取子線程中獲取的數(shù)據(jù)

Handler mhandler=new Handler(){
    @Override
    public void handleMessage(Message msg) {
      super.handleMessage(msg);
      //數(shù)據(jù)處理邏輯
    }
  };

如何在UI線程中調(diào)用Http方法類(很久以前琢磨了很久):

new JsonText(mhandler);

返回的類型都是String,這里直接寫在一個類里以后方便用

public class JsonTest {
  Handler handler;
  public JsonTest(Handler handler) {
    this.handler = handler;
    thread.start();
  }

  Thread thread=new Thread(new Runnable() {
    @Override
    public void run() {
      Message msg=new Message();
      try{
        InputStream in=null;
        HttpURLConnection connection=null;
        URL url=new URL("http://guolin.tech/api/china");
        connection=(HttpURLConnection)url.openConnection();
        connection.setRequestMethod("GET");//設(shè)置請求方式,可以不設(shè)置,默認(rèn)是GET
        connection.setConnectTimeout(5000);//設(shè)置請求超時時間
        in=connection.getInputStream();
        msg.arg1=0x01;
        msg.obj=in.toString();
        handler.sendMessage(msg);
      }catch (Exception e){
        e.printStackTrace();
        msg.arg1=0x02;
        handler.sendMessage(msg);
      }finally {
        connection.disconnect();
      }
    }
  });
}

代碼不復(fù)雜就不贅述了,接下來說其他幾點:

thread:

經(jīng)常聽到有問sleep()和wait()有什么區(qū)別。sleep()方法來自thread類中,而wait()來自object類中;其次,sleep()方法調(diào)用的時候不出讓系統(tǒng)資源,wait()讓出系統(tǒng)資源其他線程可以占用CPU;最后,sleep(milliseconds)需要指定一個睡眠時間,時間一到會自動喚醒。

http(超文本傳輸協(xié)議) ,https(超文本傳輸協(xié)議安全版)

關(guān)于TCP/IP 和UPD:

TCP/IP比UDP穩(wěn)定,但是慢,因為它有三次握手機(jī)制

關(guān)于三次握手:

網(wǎng)上有很多解釋,自己敘述就是主機(jī)先問服務(wù)器,我可以發(fā)數(shù)據(jù)了嗎,服務(wù)器回答,可以了,主機(jī)在說,那我發(fā)了。具體的內(nèi)容以后在詳細(xì)理解,先上圖

Android中怎么通過 Http協(xié)議訪問網(wǎng)絡(luò)

OKHTTP

書上的描述是:出色的網(wǎng)絡(luò)通信庫可以用來代替Httpconnection。你說出色我就用咯。

添加依賴:

dependencies {
compile 'com.squareup.okhttp3:okhttp:3.4.1'
}

使用

OkHttpClient client =new OkHttpClient();
//創(chuàng)建實例
Request request =new Request.Builder().build();

通過url()訪問網(wǎng)絡(luò):

Request request =new Request.Builder().url("www.baidu.com").build();

之后調(diào)用newCall()方法創(chuàng)建call對象,并調(diào)用excute()方法發(fā)送請求并獲取服務(wù)器數(shù)據(jù):

Response response=client.newCall(request).excute();
String str=response..body().toString();//得到值

看完上述內(nèi)容,你們掌握Android中怎么通過 Http協(xié)議訪問網(wǎng)絡(luò)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI