Tryng to get a json response from API web to Android with android-async-http lib -


i've been working android-async-http (http://loopj.com/android-async-http/) lib android reason can't catch response server, know server recieve , things should do, can't response no reason.

here method calls api:

public user registuser(string mail, string pass) throws unsupportedencodingexception {     final user user = new user();     user.settoken("enter");      string bodyasjson = "{\"user\":{\"email\":\""+mail+"\",\"password\":\""+pass+"\"}}";      stringentity entity  = new stringentity(bodyasjson);     header[] headers = {             new basicheader("content-type", "application/json")     };      client.post(this.context, "http://104.131.189.224/api/user", headers , entity, "application/json",  new jsonhttpresponsehandler() {          @override         public void onsuccess(int statuscode, header[] headers, jsonobject json) {             try {                 json = json.getjsonobject("user");                 user.setid(json.getint("id"));                 user.setemail(json.getstring("email"));                 user.setpassword("123456");                 user.settoken(json.getstring("auth_token"));             } catch ( jsonexception e) {                 user.settoken("not json");             } catch (exception e) {                 user.settoken("error ");             }          }          @override         public void onsuccess(int statuscode, header[] headers, jsonarray response) {             user.settoken("comes json array");         }          @override         public void onsuccess(int statuscode, header[] headers, string responsestring) {             user.settoken(responsestring);         }          @override         public void onfailure(int statuscode, header[] headers, string responsestring, throwable throwable) {             user.settoken("error");         }          @override         public void onretry(int retryno) {             user.settoken("nothing");         }      });      return user; } 

when call method, user.gettoken shows "enter" put in beginin, means, never entered in onsuccess, onfailure, or onretry methods.

but know server recieve request because server log shows: (example: email: carlos@prueba.com, pass: prueba)

"=>"carlos@prueba.com", "password"=>"[filtered]"}}                                   d, [2015-03-17t05:15:27.660562 #28450] debug -- :    (0.8ms)  begin     d, [2015-03-17t05:15:27.671126 #28450] debug -- :   user exists (2.6ms)  select     1 one `users` `users`.`email` = binary 'carlos@prueba.com' limit     1     d, [2015-03-17t05:15:27.677448 #28450] debug -- :   sql (1.0ms)  insert `us     ers` (`email`, `encrypted_password`, `created_at`, `updated_at`) values ('carlos     @prueba.com', '$2a$10$dg358izoag5kvj8zjteviev2v5b9canaqiyi1zd4eifc.0mh.nmu6', '2     015-03-17 05:15:27.672898', '2015-03-17 05:15:27.672898')                            d, [2015-03-17t05:15:27.681514 #28450] debug -- :    (2.0ms)  commit     d, [2015-03-17t05:15:27.684634 #28450] debug -- :   user exists (0.6ms)  select     1 one `users` `users`.`auth_token` = '6aff3b4162cfcf3062a6db12a1c     ee2bc' limit 1                                                                       d, [2015-03-17t05:15:27.685582 #28450] debug -- :    (0.2ms)  begin     d, [2015-03-17t05:15:27.690901 #28450] debug -- :   sql (0.8ms)  update `users`     set `auth_token` = '6aff3b4162cfcf3062a6db12a1cee2bc', `updated_at` = '2015-03-1     7 05:15:27.687516' `users`.`id` = 11                                           d, [2015-03-17t05:15:27.693809 #28450] debug -- :    (1.8ms)  commit     i, [2015-03-17t05:15:27.698987 #28450]  info -- :   rendered api/users/_user.jso     n.jbuilder (0.3ms)     i, [2015-03-17t05:15:27.700292 #28450]  info -- :   rendered api/users/create.js     on.jbuilder (3.2ms)     i, [2015-03-17t05:15:27.701395 #28450]  info -- : completed 200 ok in 223ms (vie             ws: 6.3ms | activerecord: 10.0ms) 

the server should response json in format:

{"user":{"id":3,"email":"carlos@prueba.com","auth_token":"dc45800fddee07cf9b300d2765283cb2"}} 

most tutorials outdated , try use apache library did find working one.

while trying manipulate team treehouse tutorial ( https://teamtreehouse.com/library/build-a-weather-app/ ) work event finder api instead of weather api, ran same problem.

they use okhttp library

  1. compile okhttp library build.gradle file under module:app

compile 'com.squareup.okhttp:okhttp:2.4.0'

this recent version of 7/9/15

  1. visit api url see if indeed retrieving data , in correct format. me using eventful.com , finding events in area. ( https://api.eventful.com/json/events/search?l=arizona&within=15&units=miles&app_key= ) app key go after "=" @ end of url.

at point working great, needed add okhttp code download json data

  1. add internet permissions manifest

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.thestephenmiller.myapp" > <uses-permission android:name="android.permission.internet" /> </manifest>

  1. open class or activity request made , add following code.

string eventfulurl = "https://api.eventful.com/json/events/search?l=arizona&within=15&units=miles&app_key="+apikey; okhttpclient client = new okhttpclient(); request request = new request.builder() .url(eventfulurl) .build();

and make call

`  call call = client.newcall(request);     call.enqueue(new callback() {         @override         public void onfailure(request request, ioexception e) {          }          @override         public void onresponse(response response) throws ioexception {             try {                 if (response.issuccessful()) {                     log.v(tag, response.body().string());                 }             } catch (ioexception e) {                 log.e(tag, "exception caught: ", e);             }         }     }); 

all of added oncreate()

this line log.v(tag, response.body().string()); outputs response log , in if statement can deal data.

the code not response if url not start "http://" or "https://" app still run error free


Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

python - NameError: name 'subprocess' is not defined -