之前關于Android Http協議訪問網絡的一點分析,最近需要回顧,就順便發到隨筆上了
Android中http連接主要是為了獲取網絡數據,目前了解的有3種方法:
HTTPCONNECTION
由于網絡連接是耗時操作不能在UI線程操作,一般通過Handler獲取子線程中獲取的數據
Handler mhandler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); //數據處理邏輯 } };如何在UI線程中調用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");//設置請求方式,可以不設置,默認是GET connection.setConnectTimeout(5000);//設置請求超時時間 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(); } } });}代碼不復雜就不贅述了,接下來說其他幾點:
thread:
經常聽到有問sleep()和wait()有什么區別。sleep()方法來自thread類中,而wait()來自object類中;其次,sleep()方法調用的時候不出讓系統資源,wait()讓出系統資源其他線程可以占用CPU;最后,sleep(milliseconds)需要指定一個睡眠時間,時間一到會自動喚醒。
http(超文本傳輸協議) ,https(超文本傳輸協議安全版)
關于TCP/IP 和UPD:
TCP/IP比UDP穩定,但是慢,因為它有三次握手機制
關于三次握手:
網上有很多解釋,自己敘述就是主機先問服務器,我可以發數據了嗎,服務器回答,可以了,主機在說,那我發了。具體的內容以后在詳細理解,先上圖

OKHTTP
書上的描述是:出色的網絡通信庫可以用來代替Httpconnection。你說出色我就用咯。
添加依賴:
dependencies {compile 'com.squareup.okhttp3:okhttp:3.4.1'}使用
OkHttpClient client =new OkHttpClient();//創建實例Request request =new Request.Builder().build();
通過url()訪問網絡:
Request request =new Request.Builder().url("www.baidu.com").build();之后調用newCall()方法創建call對象,并調用excute()方法發送請求并獲取服務器數據:
Response response=client.newCall(request).excute();String str=response..body().toString();//得到值
說一下上述兩個方法都只說了get,沒有post(提交數據),原因是懶了,以后再說
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答