2012-11-15 5 views
5

Ho trovato così tanti esempi per richiedere un'API REST, ma tutti insieme sono confusi, qualcuno può spiegarmi come utilizzare le richieste http.Client Android Rest

Il mio requisito è, voglio ottenere i dati da un'API REST fornendo nome utente, pwd e una chiave.

Quello che ho usato è stato,

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

Ma la risposta è sempre nullo e queste lavorando bene durante il test con degli strumenti del browser, pubblicando gli stessi data.Is qualche cosa di sbagliato con il mio approccio? per favore suggeriscimi il modo corretto Grazie

risposta

2

io cosa si dovrebbe provare questo,

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

Spero che questo vi aiuterà.

+0

No Ho provato questo, ancora lo stesso problema. Non sono in grado di ottenere i dati di risposta. Qualcuno potrebbe aiutarmi. Dovrei usare UrlConnection invece delle classi Http? – user470169

4

Probabilmente hai dimenticato di aggiungere l'autorizzazione Internet al file manifest. Aggiungere la seguente riga.

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

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

(2) Ricerca nel blog degli sviluppatori Android

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

Si prega di provare dopo che inviare la tua domanda, posso condividere snippet di codice il mio resto client sviluppato in (1) & (2)

Non utilizzare Cloud per Device Messaging, invece, utilizza l'approccio cloud più recente con lo sviluppo di applicazioni andrid.

C'è una nuova libreria chiamata Volley, che ha un aspetto migliore di AsyncTask. Dovrebbe essere utile nello sviluppo di client RESTful.

0

Per caso, il server si aspetta una richiesta GET per questa operazione? Se è così, potresti voler usare HttpGet invece di HttpPost.