2015-11-01 65 views
1

我使用的是android volley,我想用stringRequest发送发布数据。 但参数不发送到服务器。这里是我的代码:Android StringRequest Volley不发送帖子值

 StringRequest jsonObjReq = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { 

      @Override 
      public void onResponse(String response) { 

       Log.d(TAG, response); 


    } 
     }, new Response.ErrorListener() { 

      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.e(TAG, "Volley Error: " + error.getMessage()); 


      } 

     }) 
    { 

      @Override 
      protected Map<String, String> getParams() { 

       params = new HashMap<String, String>(); 
       params.put("tag", "openApp"); 
       Log.d("Params", params + ""); 

       return params; 
      } 
     }; 

    jsonObjReq.setShouldCache(false); 


     AppController.getInstance().addToRequestQueue(jsonObjReq); 

我不知道什么是错的?

+0

您是否在RequestQueue中添加了抽签请求? – bond007

+0

是的,我添加了,我更新了代码, –

+0

首先尝试检查发布请求是否通过其他基于浏览器的插件发送,如休息简单。 – bond007

回答

0

是的错误是关于服务器和我的代码是正确的。

2

而不是getParams,您应该使用getBody为您的POST请求。

您可以参考我的以下工作示例代码(将我的JSONObject和Url替换为您的)。希望这可以帮助!

 ... 
     try { 
      RequestQueue queue = Volley.newRequestQueue(this); 
      jsonBody = new JSONObject(); 
      jsonBody.put("Title", "Android Volley POST DATA Demo"); 
      jsonBody.put("Author", "BNK"); 
      jsonBody.put("Date", "2015/11/01"); 
      requestBody = jsonBody.toString(); 

      StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        // do something... 
       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        // do something... 
       } 
      }) { 
       @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) { 
         e.printStackTrace(); 
         return null; 
        } 
       } 
      }; 
      queue.addToRequestQueue(stringRequest); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     ... 
+0

无法使用。我上周使用了getParams()并正常工作,但突然崩溃了。 –

+0

Suddendly坠毁?任何logcat可用? – BNK

+0

此代码不工作,getParams上周工作,但现在不工作。并且没有参数发送到服务器。 D/Response:{“error”:true,“error_msg”:“必需参数'tag'丢失!”} –