編輯:關於Android編程
Android 開發,不可避免的會用到網絡技術,而多數情況下,我們都是使用 HTTP 協議來發送和接收網絡數據。Android 系統主要提供兩種方式來進行 HTTP 通信,HttpURLConnection 和 HttpClient,但是從 Android 2.3 及以後版本中,Google 推薦使用 HttpURLConnection,究其原因,就是由於 HttpClient 的 API 數量過多,使得我們很難在不破壞兼容性的情況下對它進行升級和擴展,所以目前 Android 團隊在提升和優化 HttpClient 方面的工作態度並不積極。HttpURLConnection 是一種多用途、輕量極的 HTTP 客戶端,使用它來進行 HTTP 操作可以適用於大多數的應用程序。雖然 HttpURLConnection 的 API 提供的比較簡單,但是同時這也使得我們可以更加容易地去使用和擴展它。
但也正是因為這樣,HttpURLConnection 的使用還是比較復雜的,如果不進行適當封裝的話,很容易就會寫出不少重復代碼,於是乎,一些Android 網絡通信框架也就應運而生,今天要講的就是 OkHttp 開源框架。
OkHttp 可以做很多事,包括上傳字符串、上傳文件、上傳流、上傳表格參數、上傳多部分的請求、響應 Json、響應緩存等。目前主要流行 Json 數據通信,所以我們就來講講基於 Json 通信的 GET 和 POST 請求與響應。
環境准備
介紹了這麼多理論知識,接下來就進入實戰階段了,首先下載 OkHttp 的 jar 包,可以去 GitHub 下載最近的包。
這是最新下載地址:https://search.maven.org/remote_content?g=com.squareup.okhttp3&a=okhttp&v=LATEST
當然,你也可以在項目中直接添加編譯(用於 Android Studio):compile 'com.squareup.okhttp3:okhttp:3.2.0'
OkHttp 的項目地址:https://github.com/square/okhttp
除此之外,還需要添加一個 OkHttp 的依賴包:okio.jar,下載地址:https://search.maven.org/remote_content?g=com.squareup.okio&a=okio&v=LATEST
項目地址:https://github.com/square/okio
編譯地址:compile 'com.squareup.okio:okio:1.6.0'
例子
1.請求一個URL
這裡例子請求一個URL,並以字符串的格式打印內容,主要代碼:
OkHttpClient client = new OkHttpClient(); String run(String url) throws IOException { Request request = new Request.Builder() .url(url) .build(); Response response = client.newCall(request).execute(); return response.body().string(); }
2.向服務器POST請求
向服務器發送POST請求,主要代碼:
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); OkHttpClient client = new OkHttpClient(); String post(String url, String json) throws IOException { RequestBody body = RequestBody.create(JSON, json); Request request = new Request.Builder() .url(url) .post(body) .build(); Response response = client.newCall(request).execute(); return response.body().string(); }
概述關於Retrofit,Rxjava,MVP等的使用現在已經成為了Android項目開發的標配,而Clean架構都能很好的兼顧這些方面,使得代碼結構清晰,而且在一般在項
錯誤為:Android.mk文件c++的調用方法為:復制代碼 代碼如下:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)
注冊很多app或者網絡賬戶的時候,經常需要手機獲取驗證碼,來完成注冊,那時年少,只是覺得手機獲取驗證碼這件事兒很好玩,並沒有關心太多,她是如何實現的,以及她背後的故事到底
Android 殺死進程: