Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятка с POST запросом, проблема при обработке запроса 
:(
    Опции темы
AnXIouS
Дата 22.4.2010, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.6.2008
Где: Украина, север

Репутация: нет
Всего: нет



Делаю себе на мобильный апарат скроблер для Last.fm, и столкнулся с проблемой: крякозяблы.
user posted image
Отправляю все, вроде, правильно:
Код

        HttpConnection connection = null;
        InputStream inputstream = null;
        String result = "";

        try {
            connection = (HttpConnection) Connector.open(URL);
            //HTTP Request
            connection.setRequestMethod(HttpConnection.POST);
            connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            connection.setRequestProperty("Connection", "close");
            // HTTP Response
            System.out.println("Status Line Code: " + connection.getResponseCode());
            System.out.println("Status Line Message: " + connection.getResponseMessage());

            if (connection.getResponseCode() == HttpConnection.HTTP_OK) {
                System.out.println(
                    connection.getHeaderField(0)+ " " + connection.getHeaderFieldKey(0));
                System.out.println(
                    "Header Field Date: " + connection.getHeaderField("date"));
                inputstream = connection.openInputStream();
                int length = (int) connection.getLength();
                if (length != -1) {
                    byte incomingData[] = new byte[length];
                    inputstream.read(incomingData);
                    result = new String(incomingData);
                }
                else {
                    ByteArrayOutputStream bytestream =
                            new ByteArrayOutputStream();
                    int ch;
                    while ((ch = inputstream.read()) != -1) {
                        bytestream.write(ch);
                    }
                    result = new String(bytestream.toByteArray());
                    bytestream.close();
                }
                System.out.println(result);
            }
        }
        catch(IOException error) {
            System.out.println("Caught IOException: " + error.toString());
            return "";
            }

Срока перед отправкой выглядит так:
Код

http://post.audioscrobbler.com:80/np_1.2?a=Tracktor+Bowling&t=%d0%9d%d0%b8%d1%87%d1%8c%d1%8f&b=Tracktor+Bowling&l=300&n=&m=

Что соответствует, вроде, если доверять Firefox
Код

http://post.audioscrobbler.com/np_1.2?a=Tracktor+Bowling&t=Ничья&b=Tracktor+Bowling&l=300&n=&m=

Кодировка UTF-8, она же вроде стандартна для класса String (может я и не прав, не учил я этот язык), как должна в запросе быть, как упоминается в АПИ.
http://www.lastfm.ru/api/submissions

Сопсно вопрос: что, где, когда я делаю не так.
PM MAIL   Вверх
eugine_s
Дата 23.4.2010, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



Цитата

2. The Now-Playing Notification
...
The request takes the form of a group of form encoded key-value pairs which are submitted to the server as the body of a HTTP POST request, using the now-playing URL returned by the handshake request. The key-value pairs are:


Пары ключ=значение передаются не в URL-e, а в теле POST запроса. И никаких URLEncode/URLDecode не нужно делать. 

P.S. Правда я так и не понял, где "кракозяблы" появляются.
PM MAIL   Вверх
AnXIouS
Дата 23.4.2010, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 24.6.2008
Где: Украина, север

Репутация: нет
Всего: нет



eugine_s, блин, проглядел, что нужно передавать именно в теле, вроде помогло; хотя кодировать русские символы в теле пост запроса всетаки нужно.
Цитата

P.S. Правда я так и не понял, где "кракозяблы" появляются. 

Я в самом верху картинку с примером приводил.

Тема пускай будет открыта, пока не допишу, вдруг вопрос еще возникнут.
PM MAIL   Вверх
eugine_s
Дата 23.4.2010, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



Цитата(AnXIouS @  23.4.2010,  12:10 Найти цитируемый пост)
хотя кодировать русские символы в теле пост запроса всетаки нужно.


Да, ошибся. В цитате, которую привел сам так и написано smile

Цитата

2. The Now-Playing Notification
...
The request takes the form of a group of form encoded key-value pairs which are submitted to the server as the body of a HTTP POST request, using the now-playing URL returned by the handshake request. The key-value pairs are:



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0432 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.