0

オンラインのPHPスクリプトを読み取り、JSON配列をエコーバックしてさまざまな結果を返すAndroidアプリに取り組んでいます。また、アプリからPHPスクリプトにPOST変数を送信しています。Webサイトからスクリプトに投稿すると、正常に機能し、POSTデータが存在します。アプリから投稿すると、POSTデータが空になります。

private JSONArray addBusiness(String businessName, String businessCategory, String businessDescription) {
    String result = "";
    InputStream is = null;
    try {
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("http://somesite.com/testAndroid.php");

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("id", "12345"));
        nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpClient.execute(httpPost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
    } catch (Exception e) {
        Log.e("log_tag", "Error in http connection " + e.toString());
    }

    try {
        Log.e("log_tag", "INSIDE TRY/CATCH");
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        result = sb.toString();
        Log.e("log_tag", "RESULT: " + result);
    } catch (Exception e) {
        Log.e("log_tag", "Error converting result " + e.toString());
    }

    try {
        return new JSONArray(result);
    } catch (JSONException e) {
        Log.e("log_tag", "Error parsing data " + e.toString());
    }
    return null;
}

これが空になっているPHPコードです。何か案は?また、PHP5.2を実行しているGoDaddy共有Linuxホスティングを使用しています

<?php
$return = array();
$return['result'] = 'pooping for the Internet';
$return['business'] = 'BUSINESS';
$return['post'] = $_POST['id'];
echo '['.json_encode($return).']';
?>

'post' returnを除いて、他のすべての$returnデータは正しいです。考え?

4

2 に答える 2

2

すべてのヒントをありがとう。最終的に私の.htaccessファイルにある問題。URLの前に「www」を置くという書き換えルールがあることを忘れていました。POST データの損失の原因となった先頭の「www」なしで自分のサイトに POST しようとしました。.htaccessで作業していたサブディレクトリのファイルを上書きしたところ、すべてがうまく機能するようになりました!!! ヒントをありがとう!

于 2013-01-12T08:10:20.263 に答える
0

あなたのアプリは PHP コードの結果の HTTP リクエストを生成しますか?

Perl や Python を使用する場合と同じように解釈できPHP (CLI-Mode)ます。その場合、HTTP プロトコルが関与していません。スクリプトが Web サーバー経由で配信される場合、実際には$_POST$_GETおよび$_REQUESTArrays が存在するはずです。

http-header があるかどうかは、これを使用して確認できます 。

于 2012-12-28T07:49:13.887 に答える