0

Android アプリで PHP スクリプトから JSON データをリクエストしようとしています。

携帯電話を直接接続し、「実際の」インターネット Web サーバーに直接アクセスすると、すべてがうまく機能します。ただし、エミュレータとローカルホスト(WAMPインストール)を使用するとまったく機能しません。ローカル Web サーバーでスクリプトを直接実行すると、期待どおりの結果が得られます。エミュレータを使用して同じマシンでスクリプトを呼び出している場合にのみ、問題が発生します。

これまでに試した組み合わせは次のとおりです(スクリプトはルートのサブディレクトリ「zz」にあります):

private static String url_all_venues = "http://10.0.2.2/zz/pullvenuesjson.php";

また

private static String url_all_venues = "http://10.0.2.2:80/zz/pullvenuesjson.php";

次の例外が発生します: E/JSON Parser(657): データ org.json.JSONException の解析中にエラーが発生しました: 値

私が次のことをしようとしているとき:

private static String url_all_venues = "http://10.0.2.2:8080/zz/pullvenuesjson.php";

コードは「永久に」実行され、約 5 分後にタイムアウト エラーが発生します。

ローカル Web サーバー / エミュレーターでアプリをテストできるように、それを修正する方法はありますか? 問題はローカルの Apache 構成にある可能性が最も高いのですが、よくわかりません…</p>

編集:

エラーを引き起こすと思われるコードの一部を次に示します。

            DefaultHttpClient httpClient = new DefaultHttpClient();
            String paramString = URLEncodedUtils.format(params, "utf-8");
            url += "?" + paramString;
            HttpGet httpGet = new HttpGet(url); 
            HttpResponse httpResponse = httpClient.execute(httpGet);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();

「url」は上記のものです。以下の私のコメントで述べたように、インターネット経由で「実際の」サーバーに直接アクセスしているときにコードが正常に機能するため、問題はローカルの WAMP Web サーバーが適切に応答していないことに起因しているように見えます (iow、変更する以外に何もしません)。 php スクリプトのインターネットアドレスへの URL)。奇妙なことに、スクリプトはローカルで実行しても正常に動作しますが、エミュレーターを介しては動作しません。

4

1 に答える 1

0

私はついにそれを理解しました!Log.d(..) を使用して転送されたデータをログに記録したところ、ローカルホストの状態を確認しなかったため、ユーザー名とパスワードの組み合わせが無効であることがわかりました...スクリプトとアプリは両方でデータを正常に取得します、localhost、および Web。お問い合わせいただきありがとうございます。エラーの原因を突き止めるのに役立ちました。

[Qが未回答として表示されるのを避けるために、自分で回答しました]

于 2012-06-24T08:28:26.147 に答える