Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #65, АПРЕЛЬ 2006 г.

даешь безвозмездность

noname

Спецвыпуск: Хакер, номер #065, стр. 065-060-2


getBytes();

hdc.httpProperties.put("Content-Length", data.length + "");

hdc.httpProperties.put("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)");

hdc.httpProperties.put("Connection", "close");

hdc.openOutputStream();

hdc.post(data);

stringItem1.setText("SMS отправлено!");

}

catch(Exception e) {

stringItem1.setText("Нет (E)GPRS-связи! \nИсключение: " + e.getMessage());

}

finally {

hdc.close();

}

}

Чтобы уменьшить расход трафика и чтобы после отправки POST-данных не принимать страницу, на которой написано «SMS отправлено успешно!», в соответствующий момент соединение должно быть закрыто:

hdc.httpProperties.put("Connection", "close");

Собственно, код отправки использует специальный кустарный класс (найден в интернете) для удобства работы с http. Сам мидлет представляет собой контролы для ввода текста, накиданные на форму (имя отправляющего, текст SMS и номер абонента). Номер проверялся на валидность нужного оператора вот так:

String subnum = phone.getString().substring(0,6);

// проверяем номера на МОТИВ'овские (взято с того же сайта)

if (subnum.equals("790287") || subnum.equals("790438") || subnum.equals("790454") ||

subnum.equals("790498") || subnum.equals("790863") || subnum.equals("790890") ||

subnum.equals("790891") || subnum.equals("790892") || subnum.equals("795019") ||

subnum.equals("795020"))

{

// если все ОК, то создаем поток для http-коннекта

waitform wf = new waitform(username.getString(),phone.getString(),smstxt.getString());

Display.getDisplay(MainMidlet.instance).setCurrent(wf);

conn logger = new conn(wf,username.getString(),phone.getString(),smstxt.getString());

logger.start();

System.gc();

}

[подробнее] можно посмотреть в исходниках на диске к журналу. Проект был написан полностью в среде Borland JBuilder 2006.

[проблема,] с которой я столкнулся при написании мидлета: текст в телефоне вводится и хранится в кодировке UTF-8 (UNICODE), а сервер принимает POST-данные в ASCII. Буквы английского алфавита принимаются на телефоне адресанта нормально, но вместо русских символов доходят только вопросительные знаки. В одном из публичных мидлетов мне удалось найти функцию для конвертирования UNICODE в ASCII, ее я и применил для конвертирования текстовых полей.

[такие «дыры»] можно найти на сайтах и других операторов (к примеру TELE2), а не только «МОТИВа». Администраторам безопасности компаний — сотовых операторов стоит уделить больше внимания своим сайтам...

Назад на стр. 065-060-1  Содержание