2017-02-27 103 views
0

我会包含示例,但是我尝试过的几十个示例中没有一个似乎可以工作。如果我尝试使用requestJsonObject,则在响应中出现错误,表示无法将JSONArray放入JSONObject中。如果我尝试使用JSONArray,它似乎无法处理后期参数。我发现了一篇文章,声称他们更新了一些东西,以允许将JSONObject传递到JSONArray中,但无法找到任何地方或我如何在代码中获取它。 我想要做的就是发送一个简单的平静帖子,并得到一个json响应。我正在通过post之后发布post,并且我对Java不够熟悉,无法理解这些更复杂的答案,找到没有参数的答案,或者找到试图将JSONObject推送到JsonArrayRequest中的答案(这会引发错误对我来说) 如何在地狱你得到它在Android的工作?!?!以下是我尝试的两种方法:Android Volley POST不起作用

private void makeArrayRequest(String setSwitch) 
{ 
    try { 
     Map<String, String> params = new HashMap(); 
     params.put("func", setSwitch); 
     JSONArray parameters = new JSONArray(params); 

     DisplayToast("Sending: " + setSwitch); 
     JsonArrayRequest jsonRequest = new JsonArrayRequest(
       Request.Method.POST, url, parameters, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         DisplayText("Response: " + response.toString()); 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         //error.printStackTrace(); 
         DisplayText("Error:"+error.getMessage()); 
        } 
       } 
     ); 
     Volley.newRequestQueue(this).add(jsonRequest); 
    } catch(JSONException e) { 
     // this ends up getting thrown because of the HASH input 
     DisplayText("ArrErr:"+e.getMessage()); 
    } 
} 

private void makeObjectRequest(String setSwitch) 
{ 
    DisplayToast("Sending: " + setSwitch); 


    Map<String, String> params = new HashMap(); 
    params.put("func", setSwitch); 

    JSONObject parameters = new JSONObject(params); 

    JsonObjectRequest jsonRequest = new JsonObjectRequest(
      Request.Method.POST, url, parameters, 
      new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
        DisplayText("Response: " + response.toString()); 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        //this ends up getting thrown because of JSONArray response? 
        DisplayText("Error:"+error.getMessage()); 
       } 
      } 
    ); 

    Volley.newRequestQueue(this).add(jsonRequest); 
} 
+0

有尝试StringRequest? 'https:// developer.android.com/training/volley/simple.html' –

+0

问题是,我最终会让这个东西和ESP8266对话,并且它上面的库专门被使用(REST的方式是应该工作)通过POST/GET/DELETE /等各种功能。因此,如果可能的话,我需要弄清楚如何发送这样的特定请求。 – Scott

+0

esp8266作为你的android设备的主机吗?从来没有尝试过,所以它没有任何反应? –

回答

1

java和PHP之间的区别是问题。 PHP处理POST数据的方式不同,并且由于编码的方式而没有获取值。

的解决办法是将它们从PHP解码://输入

$post = json_decode(file_get_contents("php://input"), true); 

所概述here

+0

我想我最后一次遇到这个问题是从ESP8266回到apache/php,所以我很确定我可以让微控制器正确读取它们!大声笑 – Scott