5

我发现了很多请求 REST API 的示例,但是所有示例都令人困惑,有人可以向我解释一种使用 http 请求的方法吗?

我的要求是,我想通过提供用户名、密码和密钥从 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);

但是响应始终为空,并且在使用浏览器工具通过发布相同的数据进行测试时,这些工作正常。我的方法有问题吗?请建议我正确的方法。谢谢

4

4 回答 4

6

(1)用于开发 REST 客户端的 Google I/O 视频会议

(2) 在android开发者博客中搜索

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

请在发布您的问题后尝试,我可以分享基于 (1) 和 (2) 开发的其余客户端的代码片段

不要使用云到设备消息传递,而是使用最新的云方法与 android 应用程序开发。

有一个名为 Volley 的新库,它看起来比 AsyncTask 更好。它在开发 RESTful 客户端时应该很有用。

于 2013-01-16T15:08:58.713 回答
4

您可能忘记将 Internet 权限添加到清单文件。添加以下行。

 <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 请求?如果是这样,您可能希望使用 HttpGet 而不是 HttpPost。

于 2013-08-14T01:26:28.240 回答