0

PHP コードから正しい応答を取得できない理由がわかりません。私の PHP コードの場合、それは非常に単純です。POST 引数を返すだけです。しかし、私の Android プロジェクトでは、すべての引数に対して null を返します。iOS プロジェクトで PHP コードをテストしようとしました。すべてが完璧に機能します。返さ["target": zh, "arrayString": <__NSSingleObjectArrayI 0x6000000192a0>(hello world), "source": en]れるので、おそらく私の Android プロジェクトに問題があると思います。その後、新しいプロジェクトを作成してもう一度やり直しましたが、それでも同じ問題が発生します。以下は、私の新しい Android プロジェクトの手順です。

Gradle のビルド

dependencies {
    compile 'com.android.volley:volley:1.1.0'
}

Androidマニフェスト

<uses-permission android:name="android.permission.INTERNET" />

主な活動

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String requestString = "http://ddoommaaiinn.com/testPost.php";
        JSONObject parameters = new JSONObject();
        try {
            parameters.put("source", "en");
            parameters.put("target", "zh");
            JSONArray jsonArray = new JSONArray();
            jsonArray.put("hello world");
            parameters.put("stringArray", jsonArray);
        } catch (JSONException e) {
            e.printStackTrace();
        }

        Log.d("JSONParams", parameters.toString());

        JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.POST, requestString, parameters, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                //TODO: handle success
                Log.d("successful", response.toString());
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
                //TODO: handle failure
            }
        });

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

デバッグ

12-27 08:47:19.994 4363-4363/com.pakhocheung.testjsonobjectrequest D/JSONParams: {"source":"en","target":"zh","stringArray":["hello world"]}
12-27 08:47:20.050 4363-4395/com.pakhocheung.testjsonobjectrequest D/NetworkSecurityConfig: No Network Security Config specified, using platform default
12-27 08:47:20.079 4363-4397/com.pakhocheung.testjsonobjectrequest D/OpenGLRenderer: HWUI GL Pipeline
12-27 08:47:20.885 4363-4397/com.pakhocheung.testjsonobjectrequest I/zygote: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
12-27 08:47:20.886 4363-4397/com.pakhocheung.testjsonobjectrequest I/OpenGLRenderer: Initialized EGL, version 1.4
12-27 08:47:20.886 4363-4397/com.pakhocheung.testjsonobjectrequest D/OpenGLRenderer: Swap behavior 1
12-27 08:47:20.886 4363-4397/com.pakhocheung.testjsonobjectrequest W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
12-27 08:47:20.886 4363-4397/com.pakhocheung.testjsonobjectrequest D/OpenGLRenderer: Swap behavior 0
12-27 08:47:20.892 4363-4397/com.pakhocheung.testjsonobjectrequest D/EGL_emulation: eglCreateContext: 0xa6f859e0: maj 2 min 0 rcv 2
12-27 08:47:20.895 4363-4397/com.pakhocheung.testjsonobjectrequest D/EGL_emulation: eglMakeCurrent: 0xa6f859e0: ver 2 0 (tinfo 0xb050d880)
12-27 08:47:20.998 4363-4397/com.pakhocheung.testjsonobjectrequest D/EGL_emulation: eglMakeCurrent: 0xa6f859e0: ver 2 0 (tinfo 0xb050d880)
12-27 08:47:21.279 4363-4363/com.pakhocheung.testjsonobjectrequest D/successful: {"source":null,"target":null,"arrayString":null}

PHP コード

<?php
$source = $_POST['source'];
$target = $_POST['target'];
$arrayString = $_POST['stringArray'];
echo json_encode(array('source'=>$source,'target'=>$target,'arrayString'=>$arrayString));
?>
4

2 に答える 2