Android Rest Client

老子叫甜甜 提交于 2019-11-27 15:18:56

问题


I found so many samples for requesting a REST API, but all together are confusing, can some one please explain me a way to use http requests.

My Requirement is, I want to get data from a REST API by providing username, pwd and a key.

What I have Used was,

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

But the response is always null and these working fine when tested with browser tool by posting the same data.Is some thing wrong with my approach? please suggest me the correct way. Thank you


回答1:


(1) Google I/O video session for developing REST clients

(2) search in android developer blog

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

Please try after that post your question, I can share code snippet from my rest client developed based on (1) & (2)

Do not use Cloud to Device Messaging, instead use the latest cloud approach with andrid application development.

There is new library called Volley, which looks better than AsyncTask. It should be useful in developing RESTful clients.




回答2:


You probably forgot to add the internet permission to the manifest file. Add the following line.

 <uses-permission android:name="android.permission.INTERNET" />



回答3:


I thing you should try this,

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

Hope this will help.




回答4:


By any chance, is the server expecting a GET request for this operation? If so, you may want to use HttpGet instead of HttpPost.



来源:https://stackoverflow.com/questions/13403507/android-rest-client

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!