Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Залить jpg картинку, на одноклассники 
:(
    Опции темы
Verus
Дата 1.4.2009, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 5.8.2008

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



Суть в том что вроде бы заголовок сформировал если верить сниферу, но при попытке отправить файл в ответ получаю Bad Request.
Код

_header = GetUploadHeader(urlHost, reqStr), _photos[0]);
_httpId = request(_header, _byteTosend);
_loop.exec();


QHttpRequestHeader GetUploadHeader(QString urlHost, const QString &request, const QString filePath)
{
    _byteTosend.clear();
    QFile userfile(filePath);
    if (!userfile.open(QFile::ReadOnly)) 
    {
        QMessageBox::information(0, "File Upload error",
            QString("Unable to open the file %1: %2.").arg(filePath).arg(userfile.errorString()));

    }
    setHost(urlHost, QHttp::ConnectionModeHttp);
    QHttpRequestHeader header("POST", request);
    header.setValue("Host", urlHost);
    header.setValue("Content-type", "multipart/form-data; boundary=---------------------------21974107111333");
    header.setValue("Cache-Control", "no-cache");
    header.setValue("Connection","Keep-Alive");
    _byteTosend.append("-----------------------------21974107111333\r\n");
    _byteTosend.append("content-disposition: form-data; name=\"st.filename\"; filename=\""+
        filePath+"\""+
        "\r\nContent-Type: image/jpeg\r\n\r\n");      
    _byteTosend.append(userfile.readAll());
    _byteTosend.append("\r\n-----------------------------21974107111333--\r\n");
    userfile.close();
    header.setContentLength(_byteTosend.length());
    return header;
}

Может я POST запрос сам формирую не правильно? Вот форма по которой происходит отправка файла:
Код

<input value="Загрузить фотографию" onclick="..." type="submit" name="button_upload">
<input value="" id="field_filename" type="file" name="st.filename">
<form action="http://u10.odnoklassniki.ru/uploadImage?photoId=
jQa5VZyH5Xexs9SflOKHqNBJSBy75R7Dttt0xIGyw2Gw7wP0wTzpWTrnDJL5h%2FN8Dfj4Ylo8PdqO%0AHZ3aNMfoyFSAJ5bFOE5bOZ21sqnk3c0=
        &amp;returnUrl=http://wg24.odnoklassniki.ru/dk
        ?st.cmd=userEditPhoto
        &amp;st.photoIds=176090490981
        &amp;st.action=EditComment
        &amp;st.referer=userPersonalPhotos
        &amp;returnErrorUrl=http://wg24.odnoklassniki.ru/dk
                    ?st.cmd=userAddPhoto
                    &amp;st.referer=userPersonalPhotos" method="post" enctype="multipart/form-data">


Я в пост запросе указываю только эту строку как есть ничего не дописывая. Помогите кто чем может smile 
PM MAIL   Вверх
ecspertiza
Дата 1.4.2009, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

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



Цитата(Verus @  1.4.2009,  14:07 Найти цитируемый пост)
Суть в том что вроде бы заголовок сформировал


попробуй после формирования заголовка сделать 

Код

qDebug() << header;


он тебе в консоль выведет весь твой заголовок, проверишь так или не так

потом попробуй в консоли набрать 

telnet IP 80;

IP - айпишник сервера куда отпровляешь

далее пропиши в консоли полностью свой заголовок и в конце два ентера, сервак пришлёт ответ.

Добавлено через 5 минут и 32 секунды
Цитата(Verus @  1.4.2009,  14:07 Найти цитируемый пост)
photoId=
jQa5VZyH5Xexs9SflOKHqNBJSBy75R7Dttt0xIGyw2Gw7wP0wTzpWTrnDJL5h%2FN8Dfj4Ylo8PdqO%0AHZ3aNMfoyFSAJ5bFOE5bOZ21sqnk3c0


Цитата(Verus @  1.4.2009,  14:07 Найти цитируемый пост)
st.photoIds=176090490981


вот эти два параметра тебя не смущают? 
по моему у каждой фотки свой идишник который скорее всего формируется каким нибудь хитроумным путём, и как ты его угодаешь?

Это сообщение отредактировал(а) ecspertiza - 1.4.2009, 15:54


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Verus
Дата 1.4.2009, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 5.8.2008

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



Попытался сделать
Код

qDebug() << header;


в ответ получил:
binary '<<' : no operator found which takes a left-hand operand of type 'QDebug' (or there is no acceptable conversion)

На счет Id фоток - я получаю сначала страницу GET'ом и ищу в ней эту ссылку для POST запроса, так что это все сервер генерирует.

PM MAIL   Вверх
ecspertiza
Дата 2.4.2009, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

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



Ну посмотрел бы в Ассистенте 
Код

qDebug() << header.toString()




--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Verus
Дата 2.4.2009, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 5.8.2008

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



Вот ответ телнета, но мне мало помогло это почему-то :(
user posted image

А вот сам header:

Код

POST /uploadImage?photoId=HbH0%2BKnDH8kbQtl7BUW2PAYVU4dG%2FtVDw0qQZZZbFNXXYug5Zcsc9QrSzpbQUDQGK%2BMbHjFb%2B8zl%0Aa8JJxoxItU62VQC%2BPOFEyDlS6RVMzXc%3D&amp;
returnUrl=http%3A%2F%2Fwg32.odnoklassniki.ru%2Fdk%3Bjsessionid%3DaTVMFwFecXvc%3Fst.cmd%3DuserEditPhoto%26amp%3B
st.photoIds%3D177937519083%26amp%3Bst.action%3DEditComment%26amp%3Btkn%3D5482&amp;
returnErrorUrl=http%3A%2F%2Fwg32.odnoklassniki.ru%2Fdk%3Bjsessionid%3DaTVMFwFecXvc%3Fst.cmd%3DuserAddPhoto%26amp%3Btkn%3D5218 HTTP/1.1
Host: u23.odnoklassniki.ru
Content-type: multipart/form-data; boundary=---------------------------21974107111333
Cache-Control: no-cache
Connection: Keep-Alive
content-length: 93941

PM MAIL   Вверх
ecspertiza
Дата 2.4.2009, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

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



Говаришь у тебя снифер есть, он поидее Post запросы тоже должен отлавливать, ну так залей картинку через браузер посмотри хеадер и сравни со своим, в чёмто должна быть разницаsmile если сервак так отвечаетsmile 

Да и ещё говаришь Идишник получаешь Get запросом, его тоже выводи в консоль что бы потом сверитьsmile

Это сообщение отредактировал(а) ecspertiza - 2.4.2009, 09:35


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Verus
Дата 2.4.2009, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 5.8.2008

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



Странное дело наблюдается - если нет этой строки
Код

setHost(urlHost, QHttp::ConnectionModeHttp);

то в снифере видно POST запрос, если добавить ее, то нет, хотя не совсем понятно почему так получается.

Заголовки сравнил, один в один smile

Это сообщение отредактировал(а) Verus - 2.4.2009, 09:56
PM MAIL   Вверх
ecspertiza
Дата 2.4.2009, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

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



а вот этот параметр QHttp::ConnectionModeHttps не пробовал ставить, может у них заливка картинок идёт по https.


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Verus
Дата 2.4.2009, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 5.8.2008

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



Request Failed вообще отвечает мне QHttp smile
PM MAIL   Вверх
ecspertiza
Дата 2.4.2009, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

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



Ну правильно ответ тебе и будет по http.


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Verus
Дата 2.4.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 5.8.2008

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



Что-то не совсем понял. Я ответ получаю по сигналу httpRequestFinished, вызывая там просто readAll();
А так он мне ответил ошибку и ничего не вернул.
PM MAIL   Вверх
ecspertiza
Дата 2.4.2009, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

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



Свяжись с суппортом однокласников, спроси реально ли организовать вообще такую тему, может у них защита какая нибудь стоитsmile а то этож што получается если ты фотку можешь залить то неизвесно что ты ещё туда можешь закинутьsmile


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Verus
Дата 2.4.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 5.8.2008

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



Мне что-то кажется они не рады будут такой новости smile 
PM MAIL   Вверх
ecspertiza
Дата 2.4.2009, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

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



а накой тебе это нада, браузером пользоватся уже немодноsmile ?


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Verus
Дата 2.4.2009, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 5.8.2008

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



Да это не мне надо, у меня задание такое, а теперь уже просто самому интересно стало как так не залить картинку smile
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




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


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

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