Проблема с отправкой гиперссылки через json

Я использую классы Gson в своих приложениях для Android, чтобы выровнять их и отправлять их через REST на сервер и обратно, используя HTTP-сообщения и ответы. Он всегда работал хорошо.

Но в новом приложении, которое я пишу, я пытаюсь сделать то же самое, но используя SMS-сообщения вместо HTTP-сообщений. Например, у меня есть класс...

class LocReturn
{
 public String error; //one char y = error
 public String accuracy;
 public String hyperlink;
 public String stationary; //one char y = stationary
 public String speedmph;
 public String speedkph;
 public String bearing;
}

Прежде чем сгладить класс, строка гиперссылки получит следующее значение. , ,

http://maps.google.com/maps?z=17&t=h&q=loc:31.7898,-111.0354

Однако, когда я просматриваю строку json, я вижу, что гиперссылка была изменена. , ,

http://maps.google.com/maps?z\u003d17\u0026t\u003dh\u0026q\u003dloc:31.7898,-111.0354

Кроме того, отправка SMS получает исключение NullPointer.

Код, отправляющий SMS-сообщение. , ,

Gson gson = new Gson();

String jsonstring = gson.toJson(myReturn);

String SMSBody = "###2" + jsonstring;


DebugLog.debugLog("Mole is sending Back: " + " num= " + GlobalStuff.Mobileno + " SMSBody= " + SMSBody, false);

SmsManager
 .getDefault()
 .sendTextMessage(GlobalStuff.Mobileno, null, SMSBody, null, null);

DebugLog.debugLog("After SMS Send " + SMSBody, true);

finish();

Итак, (1) я не понимаю, почему я получаю NullPointer и (2) почему гиперссылка изменяется, и это имеет к этому какое-то отношение. Спасибо, Гэри EDIT: создание нового json-объекта...

Gson gson = new GsonBuilder().disableHtmlEscaping().create();

действительно не позволяло изменять гиперссылку, но исключение nullPointerException продолжается. Это определенно строка sendText, которая вызывает исключение, поскольку, когда я заменяю SMSBody для "hello world", он отлично работает. Содержимое SMSBody...

###2{"accuracy":"Excellent","bearing":"","error":"n","hyperlink":"http://maps.google.com/maps?z=17&t=h&q=loc:31.7898,-111.0353","speedkph":"","speedmph":"","stationary":"y"}

это как-то вызывает исключение nullPointerException

1 ответ

Отвечая на мой вопрос для будущих гуглеров. , ,

Я забыл, что SMS означает SHORT Message Service. Мое сообщение было слишком длинным и, угадайте, что происходит, когда вы отправляете слишком длинное сообщение в SMSManager.sendTextMessage? Вы получаете исключение nullPointerException (вместо получения исключения MessageTooLong).

Gary

licensed under cc by-sa 3.0 with attribution.