0

OK、数日前、MySQL データベースにデータを保存し、PHP から「error_101」応答などの単純な json_encode() 文字列を受け取るために、ポスト リクエストを PHP ファイルに送信するコード ブロックを Java で作成しました。大丈夫です。昨日、openssl PHP エクステンションに問題があり、json_encode() 応答が値を返さなかったため、XAMPP を再インストールしました。phpinfo() を確認したところ、json サポートが有効になっていると表示されます。JAVA から PHP に送信される値も JSON オブジェクトであり、json_decode() は問題なく動作します。

PHP から Java に応答を送信するコードは次のとおりです。

<?php 
    header('Content-type: application/json');
    echo json_encode("error_101");
?>

JAVAで応答を取得するコードは次のとおりです

HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 10000);
HttpConnectionParams.setSoTimeout(httpParams, 10000);
HttpClient client = new DefaultHttpClient(httpParams);

String url = "http://192.168.254.19/android/register.php";

HttpPost request = new HttpPost(url);
request.setEntity(new ByteArrayEntity(json.toString().getBytes("UTF8")));
request.setHeader("json", json.toString());

HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();

String result = null;
if (entity != null) {
    InputStream instream = entity.getContent();

    InputStreamReader is_reader = new InputStreamReader(instream);
    BufferedReader br = new BufferedReader(is_reader);
    result = br.readLine();
    Log.i("Read from server", result);
    Toast.makeText(this,  result, Toast.LENGTH_LONG).show();
}

私が得ている応答は「<br />」です

4

3 に答える 3

1

チェーンのどこかにデバッグコードがないことを確認してください

echo $TesttVar1 . '<br />';

また、「header()」が機能しなくなります。すべてのエラー (error_reporting(E_ALL); ini_set('display_errors', 'on'); ) をオンにすると、その
場合は、出力された行が表示されます。

しかし、それが json_encode である場合にそれを取り除くのを助けるために、テストする関数なしで "Error_101" を返すだけです。しかし、私はあなたがプログラムをそれほど深く理解しているとは思いません。

于 2012-05-16T11:33:04.367 に答える
0

この場合:

header("Content-type: text/html");
echo json_encode("error_101");

できます。

この他の場合:

header("Content-type: application/json");
echo json_encode("error_101");

動作しません。

バグのようです!

于 2012-06-07T14:08:04.733 に答える
0

json_encode には配列が必要です。お気に入り

json_encode(array('status'=>'error_101'));
于 2012-05-16T11:32:17.783 に答える