安卓REST客户端

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个回答

6

4
你可能忘记在清单文件中添加Internet权限。 请添加以下行。
 <uses-permission android:name="android.permission.INTERNET" />

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);

希望这能帮到你。

不行,我试过了,问题还是一样。我无法获取响应数据。有人能帮帮我吗?我应该使用UrlConnection而不是Http类吗? - user470169

0

不知道服务器是否期望针对此操作收到 GET 请求?如果是,您可能需要使用 HttpGet 而不是 HttpPost。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接