2014-06-23 2 views
2

JsonArrayRequest를 사용하는 POST 요청을 Volley와 함께 사용할 수 없다는 것을 알고 있지만이를 처리하기 위해 생성자를 추가하는 방법에 대해 설명한 here 게시물을 보았습니다. 구현은 다음과 같습니다.Android Volley Post 요청 - JsonArrayRequest에 대한 해결 방법

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

생성자로 추가하려면 어떻게해야합니까? 위의 질문은이를 발리 툴 라이브러리에 배치하는 것에 대해 언급합니다. Volley를 .jar로 가져 왔으므로 이와 같은 생성자를 추가하는 방법이나 이것이 최선의 방법인지 확실하지 않습니다. 어떤 도움이라도 대단히 감사합니다. 제안 나는 무시하고 생성자와 다음 클래스를 만들었습니다

편집 할 수 있습니다.

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); 
    } 
} 

나는이 문제를 해결하려면 어떻게

The constructor JsonArrayRequest(int, String, null, Response.Listener<JSONArray>, Response.ErrorListener) is undefined 받고 있어요 슈퍼 호출 줄에 다음은 클래스입니다?

+0

서브 클래스 JsonArrayRequest을하는 클래스를 만들고 JsonArrayRequest을 확장 한 후

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; } 

을 무시하고 새로운 생성자를 추가하고 또는 사용 생성자를 넣어 대신 거기 – panini

답변

2

이 클래스

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)); 
     } 
    } 
} 
+0

답변 주셔서 감사합니다. 나는'JsonArrayRequest'를 확장하기위한 클래스를 만들고, Map에 대한 오버라이드를 추가하고, 여러분의 예제와 같은 생성자를 추가했습니다. 내 질문을 코드로 업데이트했습니다. 위에서 오류가 발생했습니다. – settheline