0

次の API 呼び出しを行っています。

http://rollout.gr/api/?query={%22search%22:%22places%22,%22page%22:1}

この API 呼び出しは、ブラウザで正しく実行されます。しかしDefaultHttpClient、Android アプリケーションでこの URL を実行するために a を使用すると、null 応答が返されます。

問題は、HTTP URL の JSON データにあると思います。したがって、Android アプリケーションでそのような URL を処理する適切な方法はどれですか?

よろしくお願いします!

4

3 に答える 3

1

称賛は有効な URL 文字ではありません。ブラウザは、それらを自動的に URL エンコードするのに十分なほど使いやすいですが、DefaultHttpClient はそうではありません。コードから使用する正しい行は次のとおりです。

http://rollout.gr/api/?query=http://rollout.gr/api/?query=%7b%22search%22:%22places%22,%22page%22:1%7d

称賛のエンコーディング ( %7b, %7d) に注意してください。

于 2012-11-10T15:23:03.007 に答える
0

あなたの問題は、ここのstrictmodeかもしれません。スレッドまたは asynctasks で http リクエストを行うことをお勧めします。strictmode では、アプリは uithread で http reauest を実行できません。コンソールに警告が表示され、これが原因で http 応答から null が返される可能性があります。

このプロジェクトはあなたの問題を解決するかもしれません:

http://loopj.com/android-async-http/

于 2012-11-10T13:39:14.923 に答える
0

特定の HTTP 初期化コードがわからないので、明示的な JSON 受け入れヘッダーを提供していないと仮定します。多くの REST エンドポイントでこれが必要です。

httpget.setHeader("Accept", "application/json");
于 2012-11-10T14:11:21.537 に答える