今天介紹一個知道的人不多的庫,寫個簡單的頁面什么的。用起來很爽?如果你疑惑那么多開源的網絡庫為啥不用?
因為這個簡單方便。拿來就用。經過這幾天的實踐。確實可以。推薦一下
如果你需要 GITHUB
首先。引入依賴
implementation 'com.amitshekhar.android:android-networking:1.0.2'
添加權限:
<uses-permission android:name="android.permission.INTERNET" />
然后你可以選擇在app的onCreate種注冊,當然。也可以在Application里
AndroidNetworking.initialize(getApplicationContext());
然后就是正題了:
通過一些自定義對其進行初始化,因為它使用OkHttp作為網絡層,您可以在初始化時傳遞自定義 okHttpClient。
// Adding an Network Interceptor for Debugging purpose :
OkHttpClient okHttpClient = new OkHttpClient() .newBuilder().addNetworkInterceptor(new StethoInterceptor()).build();
AndroidNetworking.initialize(getApplicationContext(),okHttpClient);
使用帶有 Jackson Parser 的快速 Android 網絡
implementation 'com.amitshekhar.android:jackson-android-networking:1.0.2'
// Then set the JacksonParserFactory like below
AndroidNetworking.setParserFactory(new JacksonParserFactory());
如果你要使用GET請求
AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllUsers/{pageNumber}").addPathParameter("pageNumber", "0").addQueryParameter("limit", "3").addHeaders("token", "1234").setTag("test").setPriority(Priority.LOW).build().getAsJSONArray(new JSONArrayRequestListener() {@Overridepublic void onResponse(JSONArray response) {// do anything with response}@Overridepublic void onError(ANError error) {// handle error}});
如果你要使用POST請求
AndroidNetworking.post("https://fierce-cove-29863.herokuapp.com/createAnUser").addBodyParameter("firstname", "Amit").addBodyParameter("lastname", "Shekhar").setTag("test").setPriority(Priority.MEDIUM).build().getAsJSONObject(new JSONObjectRequestListener() {@Overridepublic void onResponse(JSONObject response) {// do anything with response}@Overridepublic void onError(ANError error) {// handle error}});
您還可以像這樣在 POST 請求中發布 java 對象、json、文件等。
User user = new User();
user.firstname = "Amit";
user.lastname = "Shekhar";AndroidNetworking.post("https://fierce-cove-29863.herokuapp.com/createUser").addBodyParameter(user) // posting java object.setTag("test").setPriority(Priority.MEDIUM).build().getAsJSONArray(new JSONArrayRequestListener() { public void onResponse(JSONArray response) {// do anything with response} public void onError(ANError error) {// handle error}});JSONObject jsonObject = new JSONObject();
try {jsonObject.put("firstname", "Amit");jsonObject.put("lastname", "Shekhar");
} catch (JSONException e) {e.printStackTrace();
}AndroidNetworking.post("https://fierce-cove-29863.herokuapp.com/createUser").addJSONObjectBody(jsonObject) // posting json.setTag("test").setPriority(Priority.MEDIUM).build().getAsJSONArray(new JSONArrayRequestListener() { public void onResponse(JSONArray response) {// do anything with response} public void onError(ANError error) {// handle error}});AndroidNetworking.post("https://fierce-cove-29863.herokuapp.com/postFile").addFileBody(file) // posting any type of file.setTag("test").setPriority(Priority.MEDIUM).build().getAsJSONObject(new JSONObjectRequestListener() { public void onResponse(JSONObject response) {// do anything with response} public void onError(ANError error) {// handle error}});
將它與您自己的 JAVA 對象一起使用 - JSON Parser
/*--------------Example One -> Getting the userList----------------*/
AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllUsers/{pageNumber}").addPathParameter("pageNumber", "0").addQueryParameter("limit", "3").setTag(this).setPriority(Priority.LOW).build().getAsObjectList(User.class, new ParsedRequestListener<List<User>>() {@Overridepublic void onResponse(List<User> users) {// do anything with responseLog.d(TAG, "userList size : " + users.size());for (User user : users) {Log.d(TAG, "id : " + user.id);Log.d(TAG, "firstname : " + user.firstname);Log.d(TAG, "lastname : " + user.lastname);}}@Overridepublic void onError(ANError anError) {// handle error}});
/*--------------Example Two -> Getting an user----------------*/
AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAnUserDetail/{userId}").addPathParameter("userId", "1").setTag(this).setPriority(Priority.LOW).build().getAsObject(User.class, new ParsedRequestListener<User>() {@Overridepublic void onResponse(User user) {// do anything with responseLog.d(TAG, "id : " + user.id);Log.d(TAG, "firstname : " + user.firstname);Log.d(TAG, "lastname : " + user.lastname);}@Overridepublic void onError(ANError anError) {// handle error}});
/*-- Note : YourObject.class, getAsObject and getAsObjectList are important here --*/
從服務器下載文件
AndroidNetworking.download(url,dirPath,fileName).setTag("downloadTest").setPriority(Priority.MEDIUM).build().setDownloadProgressListener(new DownloadProgressListener() {@Overridepublic void onProgress(long bytesDownloaded, long totalBytes) {// do anything with progress }}).startDownload(new DownloadListener() {@Overridepublic void onDownloadComplete() {// do anything after completion}@Overridepublic void onError(ANError error) {// handle error }});
上傳文件
AndroidNetworking.upload(url).addMultipartFile("image",file) .addMultipartParameter("key","value").setTag("uploadTest").setPriority(Priority.HIGH).build().setUploadProgressListener(new UploadProgressListener() {@Overridepublic void onProgress(long bytesUploaded, long totalBytes) {// do anything with progress }}).getAsJSONObject(new JSONObjectRequestListener() {@Overridepublic void onResponse(JSONObject response) {// do anything with response }@Overridepublic void onError(ANError error) {// handle error }});
在另一個線程執行器中獲取響應和完成
(注意:錯誤和進度將始終在應用程序的主線程中返回)
AndroidNetworking.upload(url).addMultipartFile("image",file) .addMultipartParameter("key","value") .setTag("uploadTest").setPriority(Priority.HIGH).build().setExecutor(Executors.newSingleThreadExecutor()) // setting an executor to get response or completion on that executor thread.setUploadProgressListener(new UploadProgressListener() {@Overridepublic void onProgress(long bytesUploaded, long totalBytes) {// do anything with progress }}).getAsJSONObject(new JSONObjectRequestListener() {@Overridepublic void onResponse(JSONObject response) {// below code will be executed in the executor provided// do anything with response }@Overridepublic void onError(ANError error) {// handle error }});
如果請求已完成給定閾值,則設置不取消請求的百分比閾值
AndroidNetworking.download(url,dirPath,fileName).setTag("downloadTest").setPriority(Priority.MEDIUM).setPercentageThresholdForCancelling(50) // even if at the time of cancelling it will not cancel if 50% .build() // downloading is done.But can be cancalled with forceCancel..setDownloadProgressListener(new DownloadProgressListener() {@Overridepublic void onProgress(long bytesDownloaded, long totalBytes) {// do anything with progress }}).startDownload(new DownloadListener() {@Overridepublic void onDownloadComplete() {// do anything after completion}@Overridepublic void onError(ANError error) {// handle error }});
取消請求。
AndroidNetworking.cancel("tag"); // All the requests with the given tag will be cancelled.
AndroidNetworking.forceCancel("tag"); // All the requests with the given tag will be cancelled , even if any percent threshold is// set , it will be cancelled forcefully.
AndroidNetworking.cancelAll(); // All the requests will be cancelled.
AndroidNetworking.forceCancelAll(); // All the requests will be cancelled , even if any percent threshold is// set , it will be cancelled forcefully.
從網絡加載圖像到 ImageView
<com.androidnetworking.widget.ANImageViewandroid:id="@+id/imageView"android:layout_width="100dp"android:layout_height="100dp"android:layout_gravity="center" />imageView.setDefaultImageResId(R.drawable.default);imageView.setErrorImageResId(R.drawable.error);imageView.setImageUrl(imageUrl);
使用某些指定參數從 url 獲取位圖
AndroidNetworking.get(imageUrl).setTag("imageRequestTag").setPriority(Priority.MEDIUM).setBitmapMaxHeight(100).setBitmapMaxWidth(100).setBitmapConfig(Bitmap.Config.ARGB_8888).build().getAsBitmap(new BitmapRequestListener() {@Overridepublic void onResponse(Bitmap bitmap) {// do anything with bitmap}@Overridepublic void onError(ANError error) {// handle error}});
為特定請求自定義 OkHttpClient
OkHttpClient okHttpClient = new OkHttpClient().newBuilder().addInterceptor(new GzipRequestInterceptor()).build();AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllUsers/{pageNumber}").addPathParameter("pageNumber", "0").addQueryParameter("limit", "3").addHeaders("token", "1234").setTag("test").setPriority(Priority.LOW).setOkHttpClient(okHttpClient) // passing a custom okHttpClient .build().getAsJSONArray(new JSONArrayRequestListener() {@Overridepublic void onResponse(JSONArray response) {// do anything with response}@Overridepublic void onError(ANError error) {// handle error}});
想更多了解。自己去看吧