现在,我正在制作Android应用,我对这个标题有疑问。
我使用 com.android.volley API发送查询参数。为了发送参数,我创建了一个扩展 com.android.volley.Request 的类。 并打算采用这种方法:
protected Map getParams()抛出AuthFailureError
但之后,我需要发送数组类型参数,如
X [] = 10安培; X [] = 20安培; X [] = 30
但是我不能通过上面的方法 getParams()发送这些数组类型参数。 因为一个映射只能有一个String“x []”键的值。
请给我一些关于如何发送数组类型参数的建议 通过 com.android.volley.Request 。
问候。
答案 0 :(得分:2)
我想我可以用Code.Sseppose更好地解释你需要发送一个包含n个元素的数组。然后你应该发送它。
params.put("x[0]","value1");
params.put("x[1]","value2");
.
.
.
params.put("x[n-1]","valuen");
从getParams方法返回params你完成了。希望它会有所帮助。谢谢。
答案 1 :(得分:2)
如果我们查看请求类,我们可以找到以下函数:
/**
* 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[]
并将其返回。