2013-08-07 2 views
0

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

Но в новом приложении, которое я пишу, я пытаюсь сделать то же самое, но используя 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) почему гиперссылка получения изменилась и это имеет ничего общего с ним. Спасибо, Gary 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

Опубликовать вывод логарифма, показывающий NPE, и сообщить нам, какая строка кода вызывает его. – Squonk

+0

Кроме того, попробуйте 'Gson gson = new GsonBuilder(). DisableHtmlEscaping(). Create();', чтобы предотвратить изменение кодировки. – Squonk

ответ

0

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

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

Gary

Смежные вопросы