我正在向服务器发送一些数据,以便将其保存在服务器数据库中。但我继续犯错误。我在其他一些情况下使用了相同的方法,并且工作正常。但我不知道为什么在这种情况下它不起作用。请告诉我上传数据的正确方法,以及如何将数据作为字符串数组发送到服务器。因为你可以看到我保持'类别'和'子类别' as null因为这两个数据在数组中(用户选择的多个选项)...请帮助:) 这是我的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)
答案 0 :(得分:0)
在getParams()
params.put("category",null);
params.put("sub_category",null);
不要通过null
获取值,而不是通过""
params.put("category","");
params.put("sub_category","");
可能就是为什么会出现错误。
关于发送数据数组:
您可以尝试使用JSONArray
发送数据数组。
答案 1 :(得分:0)
我还有第二个问题的解决方案..这里是:
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);
}
通过这种方式,我们可以将String和String数组作为参数...
发送