導航:首頁 > 操作系統 > androidvolley參數

androidvolley參數

發布時間:2023-03-27 19:27:22

1. android volley stringrequest post中的getparams怎麼把json數據提交上去

1.客戶端以普通的post方式進行提交,服務端返回字元串
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
StringRequest stringRequest = new StringRequest(Request.Method.POST,httpurl,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "response -> " + response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, error.getMessage(), error);
}
}) {
@Override
protected Map<String, String> getParams() {
//在這里設置需要post的參數
Map<String, String> map = new HashMap<String, String>();
map.put("name1", "value1");
map.put("name2", "value2");
return params;
}
};
requestQueue.add(stringRequest);

2.客戶端以json串的post請求方式進行提交,服務端返回json串
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
Map<String, String> map = new HashMap<String, String>();
map.put("name1", "value1");
map.put("name2", "value2");
JSONObject jsonObject = new JSONObject(params);
JsonRequest<JSONObject> jsonRequest = new JsonObjectRequest(Method.POST,httpurl, jsonObject,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, "response -> " + response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, error.getMessage(), error);
}
})
{
//注意此處override的getParams()方法,在此處設置post需要提交的參數根本不起作用
//必須象上面那樣,構成JSONObject當做實參傳入JsonObjectRequest對象里
//所以這個方法在此處是不需要的
// @Override
// protected Map<String, String> getParams() {
// Map<String, String> map = new HashMap<String, String>();
// map.put("name1", "value1");
// map.put("name2", "value2");

// return params;
// }

2. android 使用volley時怎樣改變參數的encode編碼

IE、Firefox、Opera三種瀏覽器對URL的傳輸的處理各不相同,瀏覽器在傳輸URl時得對URL進行編碼,IE默認是以UTF-8來傳輸的,Opera可能也是以UTF-8編碼的,Firefox經過測試肯定不是以UTF-8來編碼的,有可能是以ISO-8859-1來編碼的。所以如果不對中文進行處理,那麼中文字元經各個瀏覽器以自己的編碼方式傳輸到伺服器後就出現了各種編碼方式,而伺服器卻只能以一種編碼方式來對接收到的URL進行解碼。這樣的話,和伺服器使用的編碼方式一樣的瀏覽器在使用帶中文的URl時不會出現問題,其他的瀏覽器則會出現問題。

所以解決的辦法就是在URL進行傳輸之前對其中的中文進行編碼,使用的編碼是和伺服器一樣的編碼,假設伺服器使用的編碼是UTF-8,則編碼語句如下:URLEncoder.encode("中文","UTF-8")。這樣對中文進行編碼後所有的瀏覽器都不會再用他們默認的編碼方式對中文進行編碼,因為此時瀏覽器看到的已經不是中文了,而是編碼後的位元組碼。這樣就避開了瀏覽器傳輸URL時編碼的差異性問題。

對中文參數問題的解決方式和上面一樣。但這里所指的中文參數是指以?name="中文參數"方式附在URL後,以get方法傳輸到伺服器的這種形式,並不是以表單形式提交到伺服器的。各瀏覽器對中文參數的處理方式和各自對URL中中文的處理方式都不相同,各瀏覽器之間也有差異,有的在傳輸之前不進行編碼,有的在傳輸之前就已經進行了編碼,情形非常復雜。

但是我們以不變應萬變,都用URLEncoder.encode("中文","UTF-8")對中文參數進行編碼,這樣不管各瀏覽器怎樣對中文參數進行處理,此時經過我們編碼後的中文對瀏覽器來說就是位元組碼,與a、b、c等字母沒有什麼區別。但是伺服器會用UTF-8編碼形式來還原中文參數。

總結一下:以Tomcat伺服器為例,在中添加URIEncoding="UTF-8",設置tomcat以utf-8的編碼方式來處理URL。其次,對URL中的中文和中文參數都用URLEncoder.encode("中文","UTF-8")進行編碼。

再有,就是在後台進行轉碼。

點擊後打開新頁面,用戶登錄!用戶名為中文時,火狐、google瀏覽器無問題,但IE有亂碼問題:
問題代碼:
java代碼
<a href="member!sysLogin.do?name='${member.uname }'" target="_blank" />登錄</a>
超鏈接形式的傳參,都是Get方式!
Java代碼
public String sysLogin(){
try{
name=new String(name.getBytes("iso-8859-1"),"utf-8");
int r = this.memberManager.loginbysys(name);
if(r==1){
return "syslogin";
}
this.msgs.add("登錄失敗");

}catch(RuntimeException e){
this.msgs.add(e.getMessage());
} catch (UnsupportedEncodingException e) {
this.msgs.add(e.getMessage());
}
return this.MESSAGE;
}
修改成功:
Java代碼
<a href="javascript:toSysLogin('${member.uname }');" />登錄</a>

function toSysLogin(name){
var uriname="member!sysLogin.do?name="+name;
window.open( encodeURI(uriname));
}

3. 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裡面。

4. Android volley 傳參數問題,跪求各位大神幫幫忙

第一次接觸三方框架,然後在使用volley寫一個關於登錄的功能時,發現回報錯誤信息團李 400,說是參數錯誤,然後我用chrome的dhc插件試了試,是因為在答察用volley的時候參數沒有帶入才會產清或茄生400錯誤

閱讀全文

與androidvolley參數相關的資料

熱點內容
股票漲跌比率計演算法 瀏覽:21
盈建科加密狗驅動 瀏覽:449
虛擬機gcc編譯 瀏覽:658
穿越古代肉文 瀏覽:594
語法提示的C編譯器 瀏覽:923
vc界面編程經典實例 瀏覽:885
戰爭學院伺服器什麼意思 瀏覽:143
主角穿越賣軍火給紅軍 瀏覽:778
男主因誤會報復女主 瀏覽:192
windows安裝php70 瀏覽:925
校園奇俠何丹全文閱讀 瀏覽:795
網路禁止的50部小說 瀏覽:243
泰國電影推薦大尺碼 瀏覽:7
pore命令 瀏覽:870
rsa加密上傳圖片 瀏覽:386
香港經典三圾片 瀏覽:751
什麼app可以自己定製鞋子 瀏覽:315
穿越將夜的小說有哪些 瀏覽:912
法國啄木鳥40部電影有哪些 瀏覽:664
主角叫葉無雙的小說 瀏覽:396