여기 새내기. 저는 솔라리스 원칙을 엄격하게 준수하고 디자인 패턴을 사용하여 클래스와 구성 요소를 분리 할 수있는 가장 깨끗하고 깨끗한 코드를 작성하기 위해 최선을 다하는 간단한 클라이언트 - 서버 Android 앱을 작업하고 있습니다. 나는 그것이 내가 작성해야하는 유일한 네트워크 코드 수 있습니다 바라고,이 방법을 썼다 : 내 불만으로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