2017-02-27 17 views
0

私は例を取りますが、私が試した数十例のうちどれもうまくいきません。 requestJsonObjectを使用しようとすると、応答でJSONArrayをJSONObjectに配置できないというエラーが表示されます。 JSONArrayを使用しようとすると、ポストパラメータを処理できないようです。私は、JSONObjectをJSONArrayに渡すことができるように何かを更新したと主張する投稿を見つけましたが、どこでどのようにコードを取得するかについては、どこでも気にしません。 私がしたいことは、簡単な安らかな投稿を送り、jsonの応答を得ることです。私はポストの後のポストを見ていると私はこれらのより複雑な答えのいくつかを理解するために、Javaに十分に精通していない、パラメータなしのものを見つける、またはJSONObjectをJsonArrayRequestにプッシュしようとしているものを見つける(私のためのエラー) あなたはそれがどのようにアンドロイドで動作するようになるのですか?ここで私が試した2つの方法があります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

として//入力

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

あなたがStringRequestを試してみますか? 'https:// developer.android.com/training/volley/simple.html' –

+0

問題は結局、このことをESP8266と話すことになり、その上のライブラリは具体的に使用されます(RESTの方法はPOST/GET/DELETE /などを介して様々な機能のために動作するはずです。だから私は可能ならばそのような特定の要求を送る方法を理解する必要があります。 – Scott

+0

あなたのアンドロイドデバイスへのホストとしてesp8266が正しいですか?これで試してはいけないので、そこには全く応答がないのですか? –

答えて

1

JavaとPHPの違いは問題でした。 PHPはPOSTデータの扱い方が異なり、コード化されているために値を取得できませんでした。

回避策は、PHPからそれらをデコードすることです:概説here

+0

私が最後に遭遇したのは、ESP8266からapache/phpに戻っていたので、マイクロコントローラに正しく読めるようになると確信しています!笑 – Scott

関連する問題