2015-05-06 6 views
0

Извините за мой английский. Я не могу отправить json на сервер. Мой алгоритм: пользователь проверяет изображение из галереи, затем записывает всю информацию о себе (имя, адрес электронной почты), а затем вставляет на сервер и добавляет данные ->first Загрузить изображение и его возврат json string {"status":"success","url":"\/files\/clients_photos\/tmp\/snapshot_tmp.jpg"} i разбор этой строки json как это:Cant parse simple json string (android)

JsonObject jobj = new Gson().fromJson(imageUrl, JsonObject.class); 
      myRes = jobj.get("url").getAsString(); 

и переменной myRes сообщение на сервер со всеми данными JSON. Я думаю, что это ошибка, но я могу это исправить. Ниже моя ошибка:

05-06 15:06:46.621: E/AndroidRuntime(21766): FATAL EXCEPTION: AsyncTask #1 
     05-06 15:06:46.621: E/AndroidRuntime(21766): java.lang.RuntimeException: An error occured while executing doInBackground() 
     05-06 15:06:46.621: E/AndroidRuntime(21766): at android.os.AsyncTask$3.done(AsyncTask.java:278) 
     05-06 15:06:46.621: E/AndroidRuntime(21766): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
     05-06 15:06:46.621: E/AndroidRuntime(21766): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
     05-06 15:06:46.621: E/AndroidRuntime(21766): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
     05-06 15:06:46.621: E/AndroidRuntime(21766): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
     05-06 15:06:46.621: E/AndroidRuntime(21766): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 
     05-06 15:06:46.621: E/AndroidRuntime(21766): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
     05-06 15:06:46.621: E/AndroidRuntime(21766): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
     05-06 15:06:46.621: E/AndroidRuntime(21766): at java.lang.Thread.run(Thread.java:856) 
     05-06 15:06:46.621: E/AndroidRuntime(21766): Caused by: java.lang.NullPointerException 
     05-06 15:06:46.621: E/AndroidRuntime(21766): at profile.Registration$GetPollsInformation.doInBackground(Registration.java:179) 
     05-06 15:06:46.621: E/AndroidRuntime(21766): at profile.Registration$GetPollsInformation.doInBackground(Registration.java:1) 
     05-06 15:06:46.621: E/AndroidRuntime(21766): at android.os.AsyncTask$2.call(AsyncTask.java:264) 
     05-06 15:06:46.621: E/AndroidRuntime(21766): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
     05-06 15:06:46.621: E/AndroidRuntime(21766): ... 5 more 

05-06 15:22:47.946: E/WindowManager(22921): Activity profile.Registration has leaked window [email protected] that was originally added here 
05-06 15:22:47.946: E/WindowManager(22921): android.view.WindowLeaked: Activity profile.Registration has leaked window [email protected] that was originally added here 
05-06 15:22:47.946: E/WindowManager(22921):  at android.view.ViewRootImpl.<init>(ViewRootImpl.java:363) 
05-06 15:22:47.946: E/WindowManager(22921):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:268) 
05-06 15:22:47.946: E/WindowManager(22921):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:216) 
05-06 15:22:47.946: E/WindowManager(22921):  at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:141) 
05-06 15:22:47.946: E/WindowManager(22921):  at android.view.Window$LocalWindowManager.addView(Window.java:537) 
05-06 15:22:47.946: E/WindowManager(22921):  at android.app.Dialog.show(Dialog.java:278) 
05-06 15:22:47.946: E/WindowManager(22921):  at profile.Registration$GetPollsInformation.onPreExecute(Registration.java:146) 
05-06 15:22:47.946: E/WindowManager(22921):  at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561) 
05-06 15:22:47.946: E/WindowManager(22921):  at android.os.AsyncTask.execute(AsyncTask.java:511) 
05-06 15:22:47.946: E/WindowManager(22921):  at profile.Registration$1.onClick(Registration.java:74) 
05-06 15:22:47.946: E/WindowManager(22921):  at android.view.View.performClick(View.java:3517) 
05-06 15:22:47.946: E/WindowManager(22921):  at android.view.View$PerformClick.run(View.java:14155) 
05-06 15:22:47.946: E/WindowManager(22921):  at android.os.Handler.handleCallback(Handler.java:605) 
05-06 15:22:47.946: E/WindowManager(22921):  at android.os.Handler.dispatchMessage(Handler.java:92) 
05-06 15:22:47.946: E/WindowManager(22921):  at android.os.Looper.loop(Looper.java:154) 
05-06 15:22:47.946: E/WindowManager(22921):  at android.app.ActivityThread.main(ActivityThread.java:4624) 
05-06 15:22:47.946: E/WindowManager(22921):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-06 15:22:47.946: E/WindowManager(22921):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-06 15:22:47.946: E/WindowManager(22921):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809) 
05-06 15:22:47.946: E/WindowManager(22921):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576) 
05-06 15:22:47.946: E/WindowManager(22921):  at dalvik.system.NativeStart.main(Native Method) 

И его мой код:

protected Void doInBackground(String... params) { 

      //load image 
      SyncHttpClient client = new SyncHttpClient(); 
      RequestParams paramsImage = new RequestParams(); 
      try { 
       paramsImage.put("photo", new File(filePath)); 

      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } 

      client.post("http://crm.pavlun.info/api/upload_photo", paramsImage, new TextHttpResponseHandler() { 
       @Override 
       public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { 

       } 

       @Override 
       public void onSuccess(int statusCode, Header[] headers, String responseString) { 
        Log.e("responseString", ""+responseString); 
        imageUrl = responseString; 

        Log.e("imageURL", ""+imageUrl); 
       } 
      }); 

      ////////// 
      //maybe is this the error? 

      JsonObject jobj = new Gson().fromJson(imageUrl, JsonObject.class); 
      myRes = jobj.get("url").getAsString(); 

      Log.e("link gson", myRes); 

      ///////////////////////////////////////// 

      ArrayList<NameValuePair> nameValuePairs1 = new ArrayList<NameValuePair>(); 

      JSONObject joB = new JSONObject(); 

      JSONArray list1 = new JSONArray(); 
      list1.add(params[0]); 

      Map obj=new LinkedHashMap(); 
      obj.put("company_id","1"); 
      obj.put("phones", list1); 
      obj.put("photo", myRes); 
      obj.put("name",params[1]); 
      obj.put("birthdate",params[2]); 
      obj.put("email",params[3]); 

      org.json.JSONObject jsonqwe; 

      try { 
       JSONParser operationLink = new JSONParser(); 
       ArrayList<NameValuePair> postP = new ArrayList<NameValuePair>(); 
       postP.add(new BasicNameValuePair("json", JSONValue.toJSONString(obj))); 
       jsonqwe = operationLink.makeHttpRequest(registrationURL, "POST", postP); 

       Log.e("sad", jsonqwe.toString()); 



      }catch(Exception e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 
+0

Я не думаю, что imageUrl устанавливается к тому времени, когда вы вызываете новый Gson(). FromJson (imageUrl, JsonObject.class); Добавьте журнал –

ответ

0

Gson POJO для разбора

public class RequestResponse { 

private String status; 
private String url; 

//getter and setter goes here 
} 

Синтаксический ответ

RequestResponse data= new Gson().fromJson(imageUrl, RequestResponse.class); 
String status=data.getStatus(); 
String url =data.getUrl(); 

Happy_Coding ... :)

+0

свою работу! Большое спасибо – pcb20174

+0

Как сказал @Jaydipsinh Zala, введите код в 'onSuccess', где вы получите ответ. – Bharatesh