gpt4 book ai didi

Android Volley 发布请求 - JsonArrayRequest 的解决方法

转载 作者:行者123 更新时间:2023-11-29 00:18:57 27 4
gpt4 key购买 nike

我知道使用 JsonArrayRequest 的 POST 请求在 Volley 中不可用,但我看到这篇文章 here那谈到了添加一个构造函数来处理这个问题。他们的实现是这样的:

public JsonArrayRequest(int method, String url, JSONObject jsonRequest,
Listener<JSONArray> listener, ErrorListener errorListener) {
super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(),
listener, errorListener);
}

我该如何将其添加为构造函数?上面的问题提到将它放在 Volley 工具库中。我将 Volley 作为 .jar 导入,所以我不确定如何添加这样的构造函数,或者这是否是最佳方法。非常感谢任何帮助。

编辑

我已经按照建议使用覆盖和构造函数创建了以下类。这是类(class):

public class PostJsonArrayRequest extends JsonArrayRequest {

@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String, String> params = new HashMap<String, String>();
params.put("name", "value");
return params;
}

public PostJsonArrayRequest(int method, String url, JSONObject jsonRequest,
Listener<JSONArray> listener, ErrorListener errorListener) {
super(Method.POST, url, null, listener, errorListener);
}
}

在调用 super 的线上,我得到了 The constructor JsonArrayRequest(int, String, null, Response.Listener<JSONArray>, Response.ErrorListener) is undefined

我该如何纠正这个问题?

最佳答案

创建一个类并扩展JsonArrayRequest然后覆盖

@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String, String> params = new HashMap<String, String>();
params.put("name", "value");
return params;
}

并添加一个新的构造函数并在其中调用

super(Method.POST, url, null, listener, errorListener);

或者使用这个类

public class PostJsonArrayRequest extends JsonRequest<JSONArray> {

/**
* Creates a new request.
* @param url URL to fetch the JSON from
* @param listener Listener to receive the JSON response
* @param errorListener Error listener, or null to ignore errors.
*/
public PostJsonArrayRequest(String url, Response.Listener<JSONArray> listener, Response.ErrorListener errorListener) {
super(Method.POST, url, null, listener, errorListener);
}

@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String, String> params = new HashMap<String, String>();
params.put("name", "value");
return params;
}

@Override
protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString =
new String(response.data, HttpHeaderParser.parseCharset(response.headers));
return Response.success(new JSONArray(jsonString),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JSONException je) {
return Response.error(new ParseError(je));
}
}
}

关于Android Volley 发布请求 - JsonArrayRequest 的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24358402/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com