Извините за мой английский. Я не могу отправить 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;
}
Я не думаю, что imageUrl устанавливается к тому времени, когда вы вызываете новый Gson(). FromJson (imageUrl, JsonObject.class); Добавьте журнал –