當前位置:首頁 » 安卓系統 » androidvolley

androidvolley

發布時間: 2022-06-23 09:38:17

① 關於安卓框架Volley返回數據的問題

有回調的方法就是用來寫處理結果的,直接在回調函數里寫處理的方法。 一般的請求類似於
Json json = http.getHttp(...); json是請求的返回結果,因為是非同步的,所以這種情況要封裝,加入回調函數,volley已經把這個工作做好了,你再封裝回去不是做無用功么。
我知道你的意思,寫個方法判斷是否登錄,有兩種情況,一是之前登錄過,app保存了session,直接判斷有沒有緩存就直接決定是否登錄,這是同步的,第二種是用賬號密碼等去請求登錄,但這是耗時的,所以要非同步,就不能用這種方式了,直接回調里處理(返回值解析沒問題了跳轉主頁面)就行了.
如果你非要同步請求判斷,volley有個同步請求的,如下(這個要寫在線程里),但這樣思路有問題,不是所有東西都封裝才好
RequestFuture<String> future = RequestFuture.newFuture();
StringRequest request = new StringRequest("http://vjson.com", future, future);
VjsonVolley.addRequest(request);
try {
String result = future.get();
//future.get(timeout, unit)
Log.d(MainActivity.class.getSimpleName(), result);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}

② Android客戶端訪問網路時,volley與okHttp,哪一個更好

OkHttp
物理質量
使用OkHttp需要 okio.jar (80k), okhttp.jar(330k)這2個jar包,總大小差不多400k,加上自己的封裝,差不多得410k。
功能介紹
Square 公司開源的 OkHttp 是一個專注於連接效率的 HTTP 客戶端。OkHttp 提供了對 HTTP/2 和 SPDY 的支持,並提供了連接池,GZIP 壓縮和 HTTP 響應緩存功能。
優點
支持http請求,https請求。
支持文件下載。
使用的是HttpURLConnection,不要擔心android版本的變換。(至少目前是都支持的)。
支持get,post請求。
基於Http的文件上傳
載入圖片。
缺點
比如callback回來是在線程裡面, 不能刷新UI,需要我們手動處理。
封裝比較麻煩。
Volley
物理質量
使用Volley 需要Volley.jar(120k),加上自己的封裝最多140k。
功能簡述
Volley是Goole在2013年Google I/O大會上推出了一個新的網路通信框架,它是開源的。Volley 的特點:特別適合數據量小,通信頻繁的網路操作。
優點
非常適合進行數據量不大,但通信頻繁的網路操作。
內部分裝了非同步線程。
支持get,post網路請求。
圖片下載。
可直接在主線程調用服務端並處理返回結果。
可以取消請求,容易擴展,面向介面編程
缺點
對大文件下載 Volley的表現非常糟糕。
只支持http請求。
在BasicNetwork中判斷了statusCode(statusCode < 200 || statusCode > 299),如果合條件直
圖片載入性能一般。
使用的是httpclient,HttpURLConnection。不過在android 6.0不支持httpclient了,如果想支持得添加org.apache.http.legacy.jar。
總結
在我們當前的項目 xxxSDK,xxx商城裡面,使用volley就可以了,畢竟經過了日活幾十萬的測試,至少穩定性是沒有問題的。okhttp暫時還用不上。後續如果要使用okhttp,可以再深入okhttp,給項目做重構。
不過既然轉戰Android studio,網路請求還是推薦使用Retrofit2
Retrofit 是在OkHttp上封裝的,可以參考下 Volley vs Retrofit
http://blog.csdn.net/hwz2311245/article/details/46845271

③ 安卓sd卡中volley文件夾里的有幾百個文件,可以刪嗎

Volley是一個Android系統中應用進行網路訪問的網路庫,就是說你的手機中有某個或者某些應用使用了Volley來訪問網路,所以會有這個文件夾,裡面的文件是一些緩存文件。你可以刪除,不會有影響,但這些緩存文件在你進行網路訪問的時候,可能會提升速度(比如你訪問的某個資源跟緩存文件是一樣的,那麼就直接讀取本地緩存了),所以並不建議你刪除。

④ android volley配合什麼使用

,首先需要將Volley的jar包準備好,
下載完成後將它導入到你的Eclipse工程里,然後再導出一個jar包就可以了。如果你的電腦上沒有Git,那麼也可以直接使用我導出好的jar包,

新建一個Android項目,將volley.jar文件復制到libs目錄下,這樣准備工作就算是做好了。
3. StringRequest的用法
前面已經說過,Volley的用法非常簡單,那麼我們就從最基本的HTTP通信開始學習吧,即發起一條HTTP請求,然後接收HTTP響應。首先需要獲取到一個RequestQueue對象,可以調用如下方法獲取到:
[java] view plain在CODE上查看代碼片派生到我的代碼片
RequestQueue mQueue = Volley.newRequestQueue(context);
注意這里拿到的RequestQueue是一個請求隊列對象,它可以緩存所有的HTTP請求,然後按照一定的演算法並發地發出這些請求。RequestQueue內部的設計就是非常合適高並發的,因此我們不必為每一次HTTP請求都創建一個RequestQueue對象,這是非常浪費資源的,基本上在每一個需要和網路交互的Activity中創建一個RequestQueue對象就足夠了。

接下來為了要發出一條HTTP請求,我們還需要創建一個StringRequest對象,如下所示:
[java] view plain在CODE上查看代碼片派生到我的代碼片
StringRequest stringRequest = new StringRequest("http://www..com",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("TAG", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("TAG", error.getMessage(), error);
}
});
可以看到,這里new出了一個StringRequest對象,StringRequest的構造函數需要傳入三個參數,第一個參數就是目標伺服器的URL地址,第二個參數是伺服器響應成功的回調,第三個參數是伺服器響應失敗的回調。其中,目標伺服器地址我們填寫的是網路的首頁,然後在響應成功的回調里列印出伺服器返回的內容,在響應失敗的回調里列印出失敗的詳細信息。

最後,將這個StringRequest對象添加到RequestQueue裡面就可以了,如下所示:
[java] view plain在CODE上查看代碼片派生到我的代碼片
mQueue.add(stringRequest);
另外,由於Volley是要訪問網路的,因此不要忘記在你的AndroidManifest.xml中添加如下許可權:
[java] view plain在CODE上查看代碼片派生到我的代碼片
<uses-permission android:name="android.permission.INTERNET" />

好了,就是這么簡單,如果你現在運行一下程序,並發出這樣一條HTTP請求,就會看到LogCat中會列印出網路返回給我們的一長串的HTML代碼,雖然我們看起來會有些吃力,但是瀏覽器卻可以輕松地對這段HTML代碼進行解析,然後將網路的首頁展現出來。
這樣的話,一個最基本的HTTP發送與響應的功能就完成了。你會發現根本還沒寫幾行代碼就輕易實現了這個功能,主要就是進行了以下三步操作:
1. 創建一個RequestQueue對象。
2. 創建一個StringRequest對象。
3. 將StringRequest對象添加到RequestQueue裡面。

⑤ android用volley怎麼給伺服器發送json

1.下載官網的android SDK(本人用的是eclipse)

2.新建一個android項目:

File->new->andriod Application project

7、下面就是具體的使用post和get請求的代碼:

A:發送get請求如下:

package com.example.xiaoyuantong;

import java.util.HashMap;

import java.util.Iterator;

import org.json.JSONException;

import org.json.JSONObject;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.widget.TextView;

import com.android.volley.Request;

import com.android.volley.RequestQueue;

import com.android.volley.Response;

import com.android.volley.VolleyError;

import com.android.volley.toolbox.JsonObjectRequest;

import com.android.volley.toolbox.Volley;

/**

* Demo

*/

public class MainActivity extends Activity {

private RequestQueue requestQueue ;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

init();

}

private void init() {

TextView textView = (TextView)findViewById(R.id.textView);

requestQueue = Volley.newRequestQueue(this);

getJson();

textView.setText("hello");

}

private void getJson(){

String url = "http://192.168.20.1:8080/xiaoyuantong/userAction!register.action?pwd='測試'";

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(

Request.Method.GET, url, null,

new Response.Listener<JSONObject>() {

@Override

public void onResponse(JSONObject response) {

//這里可以列印出接受到返回的json

Log.e("bbb", response.toString());

}

}, new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError arg0) {

// System.out.println("sorry,Error");

Log.e("aaa", arg0.toString());

}

});

requestQueue.add(jsonObjectRequest);

}

}

B:發送post請求如下:

package com.example.xiaoyuantong;

import java.util.HashMap;

import java.util.Map;

import org.json.JSONException;

import org.json.JSONObject;

import com.android.volley.Request;

import com.android.volley.RequestQueue;

import com.android.volley.Response;

import com.android.volley.VolleyError;

import com.android.volley.toolbox.JsonObjectRequest;

import com.android.volley.toolbox.Volley;

import android.os.Bundle;

import android.app.Activity;

import android.util.Log;

import android.view.Menu;

import android.widget.TextView;

public class PostActivity extends Activity {

private RequestQueue requestQueue ;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_post);

init();

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.post, menu);

return true;

}

private void init() {

TextView textView = (TextView)findViewById(R.id.postView);

requestQueue = Volley.newRequestQueue(this);

getJson();

textView.setText("hellopost");

}

private void getJson(){

String url = "http://192.168.20.1:8080/xiaoyuantong/userAction!reg.action";

JsonObjectRequest jsonObjectRequest ;

JSONObject jsonObject=new JSONObject() ;

try {

jsonObject.put("name", "張三");

jsonObject.put("sex", "女");

} catch (JSONException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

//列印前台向後台要提交的post數據

Log.e("post",jsonObject.toString());

//發送post請求

try{

jsonObjectRequest = new JsonObjectRequest(

Request.Method.POST, url, jsonObject,

new Response.Listener<JSONObject>() {

@Override

public void onResponse(JSONObject response) {

//列印請求後獲取的json數據

Log.e("bbb", response.toString());

}

}, new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError arg0) {

// System.out.println("sorry,Error");

Log.e("aaa", arg0.toString());

}

});

requestQueue.add(jsonObjectRequest);

} catch (Exception e) {

e.printStackTrace();

System.out.println(e + "");

}

requestQueue.start();

}

}

8、在android的logcat裡面能查看到列印的請求

(紅色的顯示的是我在後台請求到數據)

有時候logcat顯示不出數據,可能是消息被過濾了,可以在左邊點擊「減號」刪除過濾

在server端,也就是在myeclipse的建立的另一個後台工程裡面能獲取到請求:


9、後續會補充json數據的解析部分,以及過度到移動雲的部分,上面只是c/s模式下的一個簡單的基於http的請求應答例子。

⑥ android volley怎麼用


//volley挺簡單的,

//先把volley的jar包導進你的工程里然後用我的這個方法試試

//我工程里的一個方法

privatevoidgetJSONByVolley(){


RequestQueuerequestQueue=Volley.newRequestQueue(this);

=ProgressDialog.show(this,null,"Loading...");//進度條


StringRequeststringRequest=newStringRequest(url,

newResponse.Listener<String>(){

@Override

publicvoidonResponse(Stringresponse){

//這個JSONUtils一個集成框架,用其他方法解析json一樣的


Stringbody=JSONUtils.getString(response,"body","");

Gsongson=newGson();

list=newArrayList<模型>();

list=gson_point.fromJson(mpoint,

newTypeToken<List<模型>>(){

}.getType());


Gsongson_yx=newGson();

myx_list=newArrayList<模型>();

myx_list=gson_yx.fromJson(myx,

newTypeToken<List<模型>>(){

}.getType());

getBtnState(myx_list);

dataAdapter=newDataAdapter(ControlBoxActivity.this,list);

listView_data.setAdapter(dataAdapter);

if(progressDialog.isShowing()&&progressDialog!=null){

progressDialog.dismiss();

}

}

},newResponse.ErrorListener(){

@Override

publicvoidonErrorResponse(VolleyErrorerror){

Log.e("TAG",error.getMessage(),error);

Toast.makeText(ControlBoxActivity.this,"請檢查您的網路",Toast.LENGTH_LONG).show();


if(progressDialog.isShowing()&&progressDialog!=null){

progressDialog.dismiss();

}

}

});


requestQueue.add(stringRequest);

}

⑦ android studio 中volley為什麼都是鎖的

個人之前一直以為android studio是ADT bundle中那個studio,理論上是的,不過windows上android studio是基於Eclipse的?估計是我下載的版本不對。今天單獨下了mac版本的android studio,整個風格和eclipse完全不一樣,人家是基於intellij的IDE開發出來的。android studio的下載地址在這里,苦逼的網路,只能從這里下了。
第一次打開android studio的時候會讓你選擇如何操作,比如新建android工程。和eclipse不同的是,android studio新建工程的時候可能會更新SDK。這里可能就陷入一個「死循環」,更新SDK需要代理網路,但是還沒進入主界面……幸好在創建工程的界面菜單中可以設置網路,這樣就可以繼續創建工程了。
由於我今天想要嘗試下volley,傳說中的android網路庫,但是在怎麼把volley納入自己工程上弄了好久。後來按照這篇文章的步驟打包,把volley.jar移動到當前工程libs目錄中,添加為依賴後就可以用了。至於在苦逼的網路下如何git clone volley的庫,可以考慮從volley的master分支上下載tgz包。
下面才是如何使用volley的正題,個人分為以下幾部分:
常規使用
取消任務
單例
自定義RequestQueue和Request一般不大用到,有需要可以看這里的文章。下面主要說下常規使用。取消任務主要是一個方法RequestQueue#cancelAll,單例不是volley專屬的內容,Java的單例模式一般人太熟悉了。
String url = "http://example.com";
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener() {
@Override
public void onResponse(String response) {
mTvMain.setText(response.substring(0, 100));
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
mTvMain.setText("Error Occurred");
}
});
mRequestQueue.add(request);

代碼mRequestQueue是RequestQueue的實例。主要流程是創建Request之後加入RequestQueueQueue即可。Request除了StringRequest還有ImageRequest,JsonRequest等等。
最後放到模擬器上看看結果吧,比自己直接寫AndroidHttpClient代碼要方便很多。

⑧ android 怎麼用volley傳boolean值

想傳遞boolean比較簡單,可以用Bundle直接putBoolean
對於List類型,需要E是繼承了parcelable介面
並且List實際類型要是ArrayList才可以.
調用putParcelableArrayList(String key, ArrayList<? extends Parcelable> list);
關於繼承Parcelable介面
需要完成以下內容:
1,聲明該類class MyParcelable implements Parcelable;
2,創建Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>()
{
需要實現
public MyParcelable createFromParcel(Parcel source)
{
//例如MyParcelable有String name;
MyParcelable p = new MyParcelable();
p.name = source.readString();

//所有成員都要處理.

}
public MyParcelable[] newArray(int size)

{

return new MyParcelable[size];//這樣就可以了
}

}

⑨ android volley框架淘汰了嗎

淘汰策略一般是通過數量或者容量限制。每寫一個app都自成一套。此外,一旦我們脫離了程序,我們將不再獲得我們Bitmap的元數據,比如請求網路鏈接,資源描述符等等,而且對於同一個網路請求我們要用單獨的裝飾器來攔截。當然,之所以列舉這些出來,是因為在Volley裡面已經很好的解決了這些問題,當你下載了Volley的源碼編譯以後,你會發現,Volley所涵蓋的功能遠比你考慮的要多。而且這些東西,已經被很好的封裝起來。而且Volley的代碼讀起來也非常的順口,並不像Android原生的一些代碼一樣又臭又長。如果說Volley是一種好的開源框架,不如說Volley是一套現在看起來還不錯的設計模式。而且從Volley所提供的有些介面來說,Volley已經將很大部分封裝在框架內部,對於api調用者來說,無疑是個福音。

熱點內容
離散數學關系矩陣演算法 發布:2024-05-01 05:53:48 瀏覽:400
androidgithub開源項目 發布:2024-05-01 05:30:13 瀏覽:618
凱思奇指紋鎖初始密碼多少 發布:2024-05-01 05:26:05 瀏覽:628
電腦設置禁止配置怎麼取消 發布:2024-05-01 05:07:43 瀏覽:409
演算法應該是 發布:2024-05-01 04:53:36 瀏覽:528
如何遠程伺服器軟體 發布:2024-05-01 04:37:05 瀏覽:395
保定編程家教 發布:2024-05-01 04:00:28 瀏覽:377
qq客戶端源碼 發布:2024-05-01 03:37:01 瀏覽:844
山西時間同步伺服器雲空間 發布:2024-05-01 03:27:20 瀏覽:549
iis運行php 發布:2024-05-01 03:12:22 瀏覽:179