0

AndroidアプリはJSONオブジェクトを問題なく送信しているようですが、受信すると次のようになります:

「通知: 未定義のインデックス」

オブジェクトを送信するコードは次のとおりです。

    public void sendJson( String name1, String name2 ) throws JSONException {


    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://example.com/JSON_FOLDER/JSON2/parseData.php");
    HttpResponse response;

    JSONObject json = new JSONObject();

    try {           
            json.put("name1", name1);
            json.put("name2", name2);

            StringEntity se = new StringEntity(json.toString());
            se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
            httppost.getParams().setParameter("json", json);        // new code 

            //Execute HTTP POST request

            httppost.setEntity(se);
            response = httpclient.execute(httppost);

            if( response != null )  {
                    str =  inputStreamToString(response.getEntity().getContent()).toString();
                    Log.i("DATA", "Data send==  " + str );
            }

    } catch ( ClientProtocolException e ) {
        e.printStackTrace();
    } catch ( IOException e )   {
        e.printStackTrace();
    }


}

サーバー側:

$json = $_POST['name1'];
$decoded = json_decode($json, TRUE);

そして、未定義のインデックス通知を受け取りました。

4

1 に答える 1

0

編集 - 私の答えを修正する:

jsonデータとして 'name1' と 'name2' を含む1 つのパラメーターを送信しているようです。

このようなものが動作するはずです: PHP 側では、最初に JSON をデコードする必要があります:

$json = json_decode($_POST['json']);

次に、name1 と name2 にアクセスできます。

$name1 = $json['name1'];
$name2 = $json['name2'];

それでもエラーが発生する場合は、$_POST および $_GET オブジェクトを出力して、データがどのように送信されているかを確認することをお勧めします。次に、アクセス方法を確認します。


アップデート:

得られた結果は、array(0) { }PHP がリクエストからパラメーター (GET または POST) を取得しなかったことを意味します。次のような別の Android の例を試すことができます。

HttpClient client = new DefaultHttpClient();  
HttpPost post = new HttpPost("http://example.com/JSON_FOLDER/JSON2/parseData.php");   
post.setHeader("Content-type", "application/json");
post.setHeader("Accept", "application/json");

JSONObject json = new JSONObject();
json.put("name1", name1);
json.put("name2", name2);
post.setEntity(new StringEntity(json.toString(), "UTF-8"));
HttpResponse response = client.execute(post);

if( response != null )  {
    str =  inputStreamToString(response.getEntity().getContent()).toString();
    Log.i("DATA", "Data send==  " + str );
}

参考記事

于 2012-12-02T19:56:55.070 に答える