- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这里是新手。我正在和我的 friend 一起开发一个简单的客户端-服务器 Android 应用程序,尽我所能编写最干净、最漂亮的代码,严格遵循 SOLID 原则并使用设计模式来解耦我的类和组件。我写了这个方法,希望它是我必须编写的唯一网络代码:
private void VolleyJSONPostParserRequest(String url, JSONObject requestBody,
final Handler handler, final IParser replyParser) {
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
(Request.Method.POST, url, requestBody, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
Object parsedResponse = replyParser.parse(response.toString());
notifyObservers(handler, parsedResponse);
} catch (Exception e) {
Log.e(TAG,handler.getClassName() + " reply parsing error!");
notifyObservers(handler, null); }
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG,"Error receiving response for " + handler.getClassName());
notifyObservers(handler, null);
}
});
}
令我不满的是,我发现服务器的回复有时会是一个 JSONObject,有时会是一个 JSONArray。我不想复制粘贴整个内容并将“JsonObjectRequest”替换为“JsonArrayRequest”。这个问题有什么好的解决方案?或者这是我最好只复制和粘贴的情况之一?
最佳答案
在我看来,您应该实现自定义请求(例如,public class CustomRequest extends Request<NetworkResponse>
)。请阅读以下 Google 培训文档以获取更多信息:
然后...
@Override
public void onResponse(NetworkResponse response) {
try {
final String jsonString = new String(response.data,
HttpHeaderParser.parseCharset(response.headers));
// Check if it is JSONObject or JSONArray
Object json = new JSONTokener(jsonString).nextValue();
if (json instanceof JSONObject) {
//do something...
} else if (json instanceof JSONArray) {
//do something...
} else {
//do something...
}
...
} catch (UnsupportedEncodingException | JSONException e) {
e.printStackTrace();
}
}
关于java - Volley : Create a method that takes care of both JSONArrayRequest and JSONObjectRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39778798/
我在 Xamarin 中使用用户名和密码获取 JSON,一切正常,但现在我尝试学习 Android SDK,我想使用 JsonObjectRequest 获取 JSON。 在 Xamarin 中它可以
我是 Android 和 JAVA 的新手,我正在尝试解析 json 响应。我知道如何解析 jsonarray 但不知道如何解析 jsonobject。有人能告诉我怎么做吗?以下是我的回复。 {"11
所以我正在开发一个 Android 应用程序,它从 xampp 服务器上的 MySQL 数据库检索数据。这是来自 android main 的代码, Button scanButton = (Butt
The error is: "cannot resolve constructor jsonobjectrequest(int, java.lang.string, null, anonymous
这是我将数据发布到服务器的方法,但无法发布。我必须将数据发布到服务器,我正在使用 JsonObjectRequest 是否有其他方法来发布数据,请帮助我。 private void postNoti
我在实现 JsonObjectRequest 以从网络获取 JsonObject 时遇到问题。我正在尝试创建一个新的 JsonObjectRequest : JsonObjectRequest j
我一直在尝试使用 Google volley 在 Genymotion 模拟器中执行简单的 JsonObjectRequest。但下面代码的最后一行(JsonObjectRequest 的实例化)会导
我需要在 JsonObjectRequest 中使用 Mediaplayer。我的代码是这样的 obreq = new JsonObjectRequest(Request.Method.GET
我正在使用 Put 方法创建 JsonObjectRequest,但它不起作用并收到“{"detail":"Method\"GET\"not allowed."}"错误消息。 它在 Postman 上
我通过返回通用请求类型的函数创建请求: public final class SpecificRequestService extends RequestService { @Override
我需要按以下格式传递一个字符串作为参数:["default"] 我应该如何构建我的 JSONObject 以执行以下操作: final JsonObjectRequest request =
我正在尝试使用一些参数向我的服务器发送 JsonObjectRequest,但似乎参数没有到达服务器。在 SO 上发帖之前,我尝试了在 google 中找到的所有建议,但没有一个工作正常.. 这是我的
我正在尝试使用 volley 连接到 API,我正在设置所有参数和 header ,但似乎参数被忽略了,我在这里遗漏了什么?我上周开始学习 android volley,但我有点迷路了。 pa
错误: Error:(164, 40) error: no suitable constructor found for JsonObjectRequest(int,String,>,) constr
我在关注这个问题 http://www.androidhive.info/2014/08/android-building-free-wallpapers-app-part-2/ 已经到了我添加启动画
我正在使用 Volley JsonObjectRequest从服务器获取数据。 代码 fragment : JsonObjectRequest jsObjRequest = new JsonObjec
这几天我一直在摆弄这个。做错了。 Android Studio 不会让我用这个错误编译它。所以,我有这个应用程序,其中有两个选项卡和两个 fragment 。一个 fragment 称为 new,该
我正在使用 mcxiaoke/android-volley 库。我得到的编译错误是 Error:(77, 37) error: reference to JsonObjectRequest is am
public class CustomRequest extends JsonObjectRequest { public CustomRequest(String url, JSONObje
我需要将 5 个字符串和 3 个整数作为参数发送到我的服务器。我不断收到此错误:“缺少必需的参数(姓名、电子邮件、密码、性别或出生日期)!” [在我的 php 代码末尾找到]。如何将多个基本类型作为参
我是一名优秀的程序员,十分优秀!