ここで初心者です。 私は、友人とシンプルなクライアントサーバーのAndroidアプリを開発しています。私はできる限りクリーンで最も美しいコードを書いています。厳密にはSOLIDの原則に従い、デザインパターンを使用してクラスとコンポーネントを切り離します。私はそれが私が書く必要があるでしょう唯一のネットワークコードになるだろうことを期待して、この方法を書いた:私の不満にVolley:JSONArrayRequestとJSONObjectRequestの両方を処理するメソッドを作成します。
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"に置き換えたくありません。この問題の良い解決策は何ですか?それとも、コピーして貼り付けたほうがいいのでしょうか?
@ranysこんにちは!代わりに 'StringRequest'を試してみてください。私の答えは上記の' NetworkResponse'が 'String'に変換されているからです。 – BNK