如何使用齐射库发布jsonarray

时间:2014-08-11 09:55:07

标签: android

我正在使用Google排球图书馆。我正在做其他事情但是我想Post methodJsonArray PHP Server {{1}},但我不知道该怎么做。

他们没有提供热门使用排球库的任何文档,因此我们将不胜感激。

5 个答案:

答案 0 :(得分:0)

这里查找JsonArrayRequest示例 http://www.androidhive.info/2014/05/android-working-with-volley-library-1/

编辑:您可以使用标准JsonObjectRequest执行相同操作。

答案 1 :(得分:0)

JsonArrayRequest没有POST方法。您必须更改JsonArrayRequest构造函数。

更改此

public JsonArrayRequest(String url, Listener<JSONArray> listener, ErrorListener errorListener) {
        super(Method.GET, url, null, listener, errorListener);
    }

到这个

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

在此更改之后,您可以将POST方法用作JsonObjectRequest类

答案 2 :(得分:0)

为了使用volley库发送JSONArray作为param我实现了这个名为JSONPostArrayRequest的类,它扩展了JSONRequest:

public class JsonPostArrayRequest extends JsonRequest<JSONObject> {

    JSONArray params;
    public JsonPostArrayRequest(String url, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener,JSONArray params) {
        super(Method.POST, url, null, listener, errorListener);
        this.params=params;
    }

     @Override
     public byte[] getBody()  {
            if ( this.params != null && this.params.length() > 0) {
                return encodeParameters( this.params, getParamsEncoding());
            }
            return null;

      }

     private byte[] encodeParameters(JSONArray params, String paramsEncoding) {
            try {
                return params.toString().getBytes(paramsEncoding);
            } catch (UnsupportedEncodingException uee) {
                throw new RuntimeException("Encoding not supported: " + paramsEncoding, uee);
            }
        }

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

答案 3 :(得分:0)

JsonObject JsonArray 转换为已编码的字符串并调用此方法。

@Override
 public byte[] getBody()  {

   return encodedString;
  }

答案 4 :(得分:-1)

使用JSONArray请求将POST发送到PHP服务器:

RequestQueue mRequestQueue = Volley.newRequestQueue(getApplicationContext());
final String URL = "your-API-url.php";
JsonArrayRequest req = new JsonArrayRequest(Method.POST, URL, new Response.Listener<JSONArray> () {
    @Override
    public void onResponse(JSONArray response) {
        // Handle response
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        // Handle error
    }
});

// add the request object to the queue to be executed
mRequestQueue.(req);