В моем приложении для Android я применил asynctask
для проверки ответов сервера. Он работал нормально до языковой проблемы. Я отправляю пользователю Google email id
и user name
на сервер для аутентификации.Проблемы с анализом языка Android
Но сервер отправляет ошибки, когда имя пользователя отличное от English
.
Вот мой код. , ,
HttpAsyncTaskCheckAuth checkAuth = new HttpAsyncTaskCheckAuth(SignUpActivity.this);
checkAuth.execute("http://www.server_address.com//auth/login?email=" +
email +
"&name=" + name +
"&logged_in=" + "true");
Это работает нормально, если я ввожу имя, которое English
. Когда пользователь вводит имя, которое не является английским, сервер не выполняется успешно.
Вот сообщение об ошибке я получил в LogCat
09-26 16:09:34.567 3838-3838/package_name W/System.err: org.json.JSONException: Value Traceback of type java.lang.String cannot be converted to JSONArray
09-26 16:09:34.567 3838-3838/package_name W/System.err: at org.json.JSON.typeMismatch(JSON.java:111)
09-26 16:09:34.567 3838-3838/package_name W/System.err: at org.json.JSONArray.<init>(JSONArray.java:96)
09-26 16:09:34.567 3838-3838/package_name W/System.err: at org.json.JSONArray.<init>(JSONArray.java:108)
09-26 16:09:34.567 3838-3838/package_name W/System.err: at package_name.asyncTask.HttpAsyncTaskCheckAuth.onPostExecute(HttpAsyncTaskCheckAuth.java:53)
09-26 16:09:34.567 3838-3838/package_name W/System.err: at package_name.asyncTask.HttpAsyncTaskCheckAuth.onPostExecute(HttpAsyncTaskCheckAuth.java:18)
09-26 16:09:34.567 3838-3838/package_name W/System.err: at android.os.AsyncTask.finish(AsyncTask.java:636)
09-26 16:09:34.567 3838-3838/package_name W/System.err: at android.os.AsyncTask.access$500(AsyncTask.java:177)
09-26 16:09:34.567 3838-3838/package_name W/System.err: at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)
09-26 16:09:34.567 3838-3838/package_name W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
09-26 16:09:34.567 3838-3838/package_name W/System.err: at android.os.Looper.loop(Looper.java:145)
09-26 16:09:34.567 3838-3838/package_name W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6856)
09-26 16:09:34.567 3838-3838/package_name W/System.err: at java.lang.reflect.Method.invoke(Native Method)
09-26 16:09:34.567 3838-3838/package_name W/System.err: at java.lang.reflect.Method.invoke(Method.java:372)
09-26 16:09:34.567 3838-3838/package_name W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
09-26 16:09:34.567 3838-3838/package_name W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Как я могу преобразовать имя в формиата, которая будет выполнена успешно?
Я попытался следующие методы, но те не работали для меня
URLDecoder.decode(name, "UTF-8").replaceAll(" ","%20")
и
URLEncoder.encode(name, "UTF-8").replaceAll(" ","%20")
Когда я проверил тот же URL на Postman
расширение в Chrome, я получаю следующее сообщение об ошибке
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/tornado/web.py", line 1401, in _stack_context_handle_exception
raise_exc_info((type, value, traceback))
File "/usr/local/lib/python2.7/dist-packages/tornado/stack_context.py", line 314, in wrapped
ret = fn(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/tornado/web.py", line 1613, in future_complete
f.result()
File "/usr/local/lib/python2.7/dist-packages/tornado/concurrent.py", line 232, in result
raise_exc_info(self._exc_info)
File "/usr/local/lib/python2.7/dist-packages/tornado/gen.py", line 282, in wrapper
yielded = next(result)
File "startup.py", line 15884, in get
print user["name"]
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)
Просьба предложить мне возможные пути решения этой проблемы.
, что ошибка сервера отправки при отправке имя в другой, что английский язык? –
@BhawnaRaheja У меня есть эта ошибка org.json.JSONException: Значение Traceback типа java.lang.String не может быть преобразовано в JSONArray – anuradha
Обновите вопрос с помощью точной ошибки, которую вы получите. – Tigger