【问题标题】:How to send String Array as param to srver and Getting error while uploading data on server --onErrorResponse (VolleyError error)如何将字符串数组作为参数发送到服务器并在服务器上上传数据时出错 --on 错误响应(VolleyError 错误)
【发布时间】:2016-11-03 05:11:06
【问题描述】:

我正在向服务器发送一些数据,以便将其保存在服务器数据库中。但我不断收到错误。我在其他一些情况下也使用了相同的方法,并且效果很好。但我不知道为什么在这种情况下它不起作用。请告诉我上传数据的正确方法以及如何将数据作为字符串数组发送到服务器。因为如您所见,我将“类别”和“子类别”保留为空,因为这两者的数据在数组中(用户选择了多个选项)...请帮助:) 这是我的 uploadData 方法:

        private void uploadData(){
        StringRequest stringRequest = new StringRequest(Request.Method.POST,UPLOAD_URL,new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            Log.d("sub response", response);
        }
    },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    String er=error.getMessage();
                    Log.d("error is",er);
                    Toast.makeText(UpdateUserProfile.this,er,Toast.LENGTH_LONG).show();
                    //Log.d("","error message"+er);
                }
            }){

        @Override
        protected Map<String,String> getParams(){
            Map<String,String> params = new HashMap<String, String>();
            params.put("user_id",user_id);
            params.put("first_name",f_name.getText().toString());
            params.put("last_name",l_name.getText().toString());
            params.put("mobile_number",contact.getText().toString());
            params.put("zip_code",z_code.getText().toString());
            params.put("state",state_id_only);
            params.put("region",region_id_only);
            params.put("address",user_address.getText().toString());
            params.put("category",null);
            params.put("sub_category",null);
            params.put("advertise_image",image);

            return params;
        }

    };


    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);
}  //end =================purpose==========================

每次我点击按钮上传数据时,我都会得到这个异常:

     java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
        at libcore.net.UriCodec.encode(UriCodec.java:132)
        at java.net.URLEncoder.encode(URLEncoder.java:57)
        at com.android.volley.Request.encodeParameters(Request.java:450)
        at com.android.volley.Request.getBody(Request.java:436)
        at com.android.volley.toolbox.HurlStack.addBodyIfExists(HurlStack.java:260)
        at com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:234)
        at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:107)
        at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:96)
        at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)

【问题讨论】:

    标签: php android arrays json android-volley


    【解决方案1】:

    getParams()

    params.put("category",null);
    params.put("sub_category",null);
    

    不要为值传递null,而是传递""

    params.put("category","");
    params.put("sub_category","");
    

    可能这就是它出错的原因。

    关于发送数据数组: 您可以尝试使用JSONArray 发送数据数组。

    【讨论】:

      【解决方案2】:

      我也有第二个问题的解决方案..这里是:

           int i=0;
                  for(String object: selectedcate){
                   params.put("category["+(i++)+"]", object);
                  }
                 // params.put("category","");
                  int s=0;
                  for(String object: selected_sub_cate){
                      params.put("sub_category["+(s++)+"]", object);
                  }
      

      通过这种方式,我们可以将字符串和字符串数组作为参数发送...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-04
        • 1970-01-01
        • 1970-01-01
        • 2018-05-07
        • 1970-01-01
        • 2021-09-09
        • 2014-07-02
        • 1970-01-01
        相关资源
        最近更新 更多