簡體   English   中英

如何通過com.android.volley.Request發送數組類型參數

[英]How to send array type parameters via com.android.volley.Request

現在,我正在制作一個Android應用程序,我對這個標題有疑問。

我使用com.android.volley API來發送查詢參數。為了發送參數,我做了一個擴展com.android.volley.Request的類,並打算用oderride這個方法:

protected Map getParams()拋出AuthFailureError

但之后,我需要發送數組類型參數,如

X [] = 10&X [] = 20&X [] = 30

但是我不能通過上面的方法getParams()發送這些數組類型參數。 因為一個映射只能有一個String“x []”鍵的值。

請給我一些關於如何通過com.android.volley.Request發送數組類型參數的建議。

問候。

我想我可以用Code.Sseppose更好地解釋你需要發送n個元素的數組。然后你應該發送它。

params.put("x[0]","value1");
params.put("x[1]","value2");
   .
   .
   .
params.put("x[n-1]","valuen");

從getParams方法返回params你完成了。希望它會有所幫助。謝謝。

如果我們查看請求類,我們可以找到以下函數:

/**
 * Returns the raw POST or PUT body to be sent.
 *
 * @throws AuthFailureError in the event of auth failure
 */
public byte[] getBody() throws AuthFailureError {
    Map<String, String> params = getParams();
    if (params != null && params.size() > 0) {
        return encodeParameters(params, getParamsEncoding());
    }
    return null;
}

/**
 * Converts <code>params</code> into an application/x-www-form-urlencoded encoded string.
 */
private byte[] encodeParameters(Map<String, String> params, String paramsEncoding) {
    StringBuilder encodedParams = new StringBuilder();
    try {
        for (Map.Entry<String, String> entry : params.entrySet()) {
            encodedParams.append(URLEncoder.encode(entry.getKey(), paramsEncoding));
            encodedParams.append('=');
            encodedParams.append(URLEncoder.encode(entry.getValue(), paramsEncoding));
            encodedParams.append('&');
        }
        return encodedParams.toString().getBytes(paramsEncoding);
    } catch (UnsupportedEncodingException uee) {
        throw new RuntimeException("Encoding not supported: " + paramsEncoding, uee);
    }
}

所以你可以覆蓋byte[] getBody() throws AuthFailureError 創建自己的主體並將其轉換為byte[]並返回它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM