5

REST API をリクエストするための非常に多くのサンプルを見つけましたが、どれも混乱を招きます。http リクエストの使用方法を教えてください。

私の要件は、ユーザー名、pwd、およびキーを提供して、REST API からデータを取得したいということです。

私が使用したのは、

        HttpClient client = new DefaultHttpClient();  
        HttpPost post = new HttpPost("REST API url"); 
        post.setHeader("Content-type", "application/json");

        JSONObject obj = new JSONObject();
        obj.put("username", "un");
        obj.put("pwd", "password");
        obj.put("key","123456");

        post.setEntity(new StringEntity(obj.toString(), "UTF-8"));
        HttpResponse response = client.execute(post);

しかし、応答は常にnullであり、同じデータを投稿してブラウザツールでテストすると、これらは正常に機能します.私のアプローチに何か問題がありますか? 正しい方法を教えてください。ありがとうございました

4

4 に答える 4

6

(1) REST クライアントを開発するための Google I/O ビデオ セッション

(2) android 開発者ブログで検索

(3) https://github.com/darko1002001/android-rest-client

その後、質問を投稿してみてください。(1) & (2) に基づいて開発された残りのクライアントからのコード スニペットを共有できます。

Cloud to Device Messaging を使用しないでください。代わりに、Android アプリケーション開発で最新のクラウド アプローチを使用してください。

Volley と呼ばれる新しいライブラリがあり、AsyncTask よりも優れています。RESTful クライアントの開発に役立つはずです。

于 2013-01-16T15:08:58.713 に答える
4

マニフェスト ファイルにインターネット アクセス許可を追加するのを忘れている可能性があります。次の行を追加します。

 <uses-permission android:name="android.permission.INTERNET" />
于 2012-12-29T06:58:48.257 に答える
2

私はあなたがこれを試してみるべきだと思います.

HttpContext localContext = new BasicHttpContext();
HttpClient client = new DefaultHttpClient();  
HttpPost post = new HttpPost("REST API url"); 
post.setHeader("Content-type", "application/json");

JSONObject obj = new JSONObject();
obj.put("username", "un");
obj.put("pwd", "password");
obj.put("key","123456");

post.setEntity(new StringEntity(obj.toString(), "UTF-8"));
HttpResponse response = client.execute(post,localContext);

これが役立つことを願っています。

于 2012-11-15T18:22:25.757 に答える
0

ひょっとして、サーバーはこの操作に対して GET リクエストを期待しているのでしょうか? その場合は、HttpPost の代わりに HttpGet を使用することをお勧めします。

于 2013-08-14T01:26:28.240 に答える