2014-07-09 90 views
0

我正在使用請求類做POST請求,到我的服務器。我必須發送一些參數。所以我這樣做。排隊傳遞JSON對象作爲參數POST方法

private final Listener<String> mListener; 
private Map<String, String> mParams = new HashMap<String, String>(); 

public ChangePwdRequest(int method, String username, String currentPwd, 
     String newPwd, Listener<String> mListener, ErrorListener listener) { 
    super(Method.POST, Utilites.CHANGEPWD_REQUEST_URL,listener); 
    mParams.put("user_id", username); 
    mParams.put("current_password", currentPwd); 
    mParams.put("new_password", newPwd); 
    this.mListener = mListener; 
} 

@Override 
protected Map<String, String> getParams() throws AuthFailureError { 
    return mParams; 
} 

@Override 
protected Response<String> parseNetworkResponse(NetworkResponse response) { 

    Gson mGson = new Gson(); 
    String jsonString = new String(response.data); 
    ChangePwdResponse cateResponse = mGson.fromJson(jsonString, 
      ChangePwdResponse.class); 
    return Response.success(cateResponse.result, getCacheEntry()); 
} 

@Override 
protected void deliverResponse(String response) { 
    mListener.onResponse(response); 
} 

我得到服務器的響應。它工作正常。但是,如果我想發送一些JSON數據到我的郵政電話,那麼我應該使用JsonRequest。對 ?

我的問題是 1.由於請求是所有請求的基類,可以在這裏發送Json中的參數嗎? 2.當我在上面的代碼片段中發送使用map發送參數時,它是否在後面的字符串中附加?

+0

這個類擴展了'Request'類嗎? – Pr38y

+0

是的,它確實.... – Bora

回答

0

回答1:使用請求類,您可以直接覆蓋Map<String, String> getParams()方法,並設置散列映射中的paramas以發佈請求。對於設置JsonObject,您可能必須覆蓋getBody(),而不是返回jsonObj.toString().getBytes("utf-8")。但我建議你遵循DRY規則使用JsonObjectRequest類或StringObjectRequest類。

答案2:它將其轉換爲編碼字符串,將其轉換爲字節數組,然後打開一個連接對象並將該字節數組寫入該連接對象的輸出流中,或者將該實體設置爲HttpRequest對象。

挖凌空源代碼 在HurlStack類API級=> 9,以便使POST請求與身體request.getBody()方法被調用,其返回是在連接對象的輸出流寫入[]byte。 在HttpClientStack類的API級別< 9中,字節數組被設置爲HttpEntity類的實體。

HttpEntity entity = new ByteArrayEntity(request.getBody()); 
httpRequest.setEntity(entity); 
相關問題