如何在android截击中发布数组参数?

如何在android截击中发布数组参数?,android,api,android-volley,Android,Api,Android Volley,前 [{ "id": 1, "name": "Christina Walker", "selectedGrade": 4 }, { "id": 2, "name": "Bond Mccormick", "selectedGrade": 1 }] 像这样? 有人能帮我吗?过去三天我一直在尝试吗?请尝试以下代码 JS

 [{
            "id": 1,
            "name": "Christina Walker",
            "selectedGrade": 4
        }, {
            "id": 2,
            "name": "Bond Mccormick",
            "selectedGrade": 1
        }]
像这样? 有人能帮我吗?过去三天我一直在尝试吗?

请尝试以下代码

   JSONObject objectJson1= new JSONObject();
   objectJson1.put("id","1");
   objectJson1.put("selectedGrade","8");
   objectJson1.put("selectedGrade","8");
//第二阵列

   JSONObject objectJson2= new JSONObject();
   objectJson2.put("id","2");
   objectJson2.put("selectedGrade","9");
   objectJson2.put("selectedGrade","9");
   JSONArray mainArray=new JSONArray();
   mainArray.put(0,objectJson1);
   mainArray.put(1,objectJson2);
   String data=mainArray.toString();
然后像截击一样传球

public void requestVolley(){
StringRequest stringRequest = null;
    final String requestBody = data;
    stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            //catch your resposne
        }
    }, new Response.ErrorListener() {

 @Override
        public void onErrorResponse(VolleyError error) {
            String json="";
            if (error.networkResponse != null) {
                // = String.valueOf(response.statusCode);
                try {
                    json = new String(
                            error.networkResponse.data, HttpHeaderParser.parseCharset(error.networkResponse.headers));
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                Response<String> rr =Response.success(json, HttpHeaderParser.parseCacheHeaders(error.networkResponse));
                setCustomResponse(rr);
            }
        }
    }) {
@Override
        public String getBodyContentType() {
            return "application/json; charset=utf-8";
        }

        @Override
        public byte[] getBody() throws AuthFailureError {
            try {
                return requestBody == null ? null : requestBody.getBytes("utf-8");
            } catch (UnsupportedEncodingException uee) {
                VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8");
                return null;
            }
        }

        @Override
        protected Response<String> parseNetworkResponse(NetworkResponse response) {
            String responseString = "";
            String json="";
            if (response != null) {
                // = String.valueOf(response.statusCode);
                try {
                    json = new String(
                            response.data, HttpHeaderParser.parseCharset(response.headers));
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                // can get more details such as response.headers
            }
            return Response.success(json, HttpHeaderParser.parseCacheHeaders(response));
        }
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String,String> params = new HashMap<String, String>();
            params.put("Authorization", "your key if any");
            return params;
        }
    };
    stringRequest.setRetryPolicy(new DefaultRetryPolicy(
            30000,
            0,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    stringRequest.setShouldCache(false);
    YourApplicationLevelClass.volleyQueueInstance.addToRequestQueue(stringRequest);
}
创建截击单打类

  public class VolleySingleton 
    {
    private static VolleySingleton mInstance;
    private RequestQueue mRequestQueue;
    private ImageLoader mImageLoader;
    private static Context mCtx;
    private RequestQueue mRequestQueuePatch;

    private VolleySingleton(Context context) {

        final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
        final int cacheSize = maxMemory / 8;

        this.mCtx = context;
        mRequestQueue = getRequestQueue();
        mImageLoader = new ImageLoader(mRequestQueue,

                new ImageLoader.ImageCache() {
                    private final LruCache<String, Bitmap>
                            cache = new LruCache<String, Bitmap>(cacheSize);

                    @Override
                    public Bitmap getBitmap(String url) {
                        return cache.get(url);
                    }

                    @Override
                    public void putBitmap(String url, Bitmap bitmap) {
                        cache.put(url, bitmap);
                    }
                });
    }

    public static synchronized VolleySingleton getInstance(Context context) {
        if (mInstance == null) {
            mInstance = new VolleySingleton(context);
        }
        return mInstance;
    }

    public RequestQueue getRequestQueue() {
        if (mRequestQueue == null) {
            // getApplicationContext() is key, it keeps you from leaking the
            // Activity or BroadcastReceiver if someone passes one in.
            mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
        }
        return mRequestQueue;
    }
    public RequestQueue getRequestQueuePatch() {
        if (mRequestQueuePatch == null) {
            // getApplicationContext() is key, it keeps you from leaking the
            // Activity or BroadcastReceiver if someone passes one in.
            mRequestQueuePatch = Volley.newRequestQueue(mCtx.getApplicationContext());
        }
        return mRequestQueuePatch;
    }

    public <T> void addToRequestQueue(Request<T> req) {
        getRequestQueue().add(req);
    }

    public <T> void addToRequestQueuePatch(Request<T> req) {
        getRequestQueuePatch().add(req);
    }

    public <T> void cancelRequestInQueue(String tag) {
        getRequestQueue().cancelAll(tag);
    }

    public ImageLoader getImageLoader() {
        return mImageLoader;
    }
   }
公共类截击单打
{
私人静态截击;
私有请求队列mRequestQueue;
私有图像加载器;
私有静态上下文mCtx;
私有请求队列mRequestQueuePatch;
私人截击单打(上下文){
final int maxMemory=(int)(Runtime.getRuntime().maxMemory()/1024);
最终int cacheSize=maxMemory/8;
this.mCtx=上下文;
mRequestQueue=getRequestQueue();
mImageLoader=新的图像加载器(mRequestQueue,
新建ImageLoader.ImageCache(){
私人决赛
cache=新的LruCache(cacheSize);
@凌驾
公共位图getBitmap(字符串url){
返回cache.get(url);
}
@凌驾
公共位图(字符串url、位图){
cache.put(url、位图);
}
});
}
公共静态同步截击单例getInstance(上下文){
if(minInstance==null){
mInstance=新的截击单打(上下文);
}
回报率;
}
公共请求队列getRequestQueue(){
if(mRequestQueue==null){
//getApplicationContext()是关键,它可以防止泄漏
//活动或广播接收器(如果有人传入)。
mRequestQueue=Volley.newRequestQueue(mCtx.getApplicationContext());
}
返回mrequest队列;
}
public RequestQueue getRequestQueuePatch(){
if(mRequestQueuePatch==null){
//getApplicationContext()是关键,它可以防止泄漏
//活动或广播接收器(如果有人传入)。
mRequestQueuePatch=Volley.newRequestQueue(mCtx.getApplicationContext());
}
返回mRequestQueuePatch;
}
公共无效addToRequestQueue(请求请求){
getRequestQueue().add(请求);
}
公共无效addToRequestQueuePatch(请求请求){
getRequestQueuePatch().add(请求);
}
public void cancelRequestInQueue(字符串标记){
getRequestQueue().cancelAll(标记);
}
公共ImageLoader getImageLoader(){
返回图像加载器;
}
}

尝试发出JSONArray请求。在getparams中,它只接受字符串值。。但我需要传递数组值。您可以使用截击发送json字符串作为参数。这里可能重复如何将jsonarray转换为jsonobject?string data=object.toString();只需将json数组转换为字符串,并将其作为字符串传递给截击,然后在服务器端将字符串转换为JSONArray并进行解析it@Nanthu如果答案有帮助,请接受这个答案。简单检查我的答案
  public class VolleySingleton 
    {
    private static VolleySingleton mInstance;
    private RequestQueue mRequestQueue;
    private ImageLoader mImageLoader;
    private static Context mCtx;
    private RequestQueue mRequestQueuePatch;

    private VolleySingleton(Context context) {

        final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
        final int cacheSize = maxMemory / 8;

        this.mCtx = context;
        mRequestQueue = getRequestQueue();
        mImageLoader = new ImageLoader(mRequestQueue,

                new ImageLoader.ImageCache() {
                    private final LruCache<String, Bitmap>
                            cache = new LruCache<String, Bitmap>(cacheSize);

                    @Override
                    public Bitmap getBitmap(String url) {
                        return cache.get(url);
                    }

                    @Override
                    public void putBitmap(String url, Bitmap bitmap) {
                        cache.put(url, bitmap);
                    }
                });
    }

    public static synchronized VolleySingleton getInstance(Context context) {
        if (mInstance == null) {
            mInstance = new VolleySingleton(context);
        }
        return mInstance;
    }

    public RequestQueue getRequestQueue() {
        if (mRequestQueue == null) {
            // getApplicationContext() is key, it keeps you from leaking the
            // Activity or BroadcastReceiver if someone passes one in.
            mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
        }
        return mRequestQueue;
    }
    public RequestQueue getRequestQueuePatch() {
        if (mRequestQueuePatch == null) {
            // getApplicationContext() is key, it keeps you from leaking the
            // Activity or BroadcastReceiver if someone passes one in.
            mRequestQueuePatch = Volley.newRequestQueue(mCtx.getApplicationContext());
        }
        return mRequestQueuePatch;
    }

    public <T> void addToRequestQueue(Request<T> req) {
        getRequestQueue().add(req);
    }

    public <T> void addToRequestQueuePatch(Request<T> req) {
        getRequestQueuePatch().add(req);
    }

    public <T> void cancelRequestInQueue(String tag) {
        getRequestQueue().cancelAll(tag);
    }

    public ImageLoader getImageLoader() {
        return mImageLoader;
    }
   }