Russian Qt Forum
Ноябрь 05, 2024, 22:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Windows не дает интернет доступ программе  (Прочитано 5553 раз)
abodnya
Гость
« : Июнь 07, 2013, 16:45 »

Такс, я написал свой просморщик картинок, в котром реализована функция заливки изображений в вк и imageshack.
На компьютерах, на которых я компилил сиё чудо всё работает отлично. На других "чистеньких" компьютерах программа не получает интернет доступа.
примерный код обращения к серверу
Код:
#include "uploadtoimageshack.h"
void UploadToImageShack::operator()(QString imagename)
{
    QPixmap image(imagename);
    QByteArray imageData;
    QBuffer buffer(&imageData);
    buffer.open(QIODevice::WriteOnly);
    image.save(&buffer, "PNG");
    upload(imageData,imagename);
}

void UploadToImageShack::upload(QByteArray &picture,QString imagename)
{
    qDebug() << "start upload";
    QNetworkAccessManager *manager = new QNetworkAccessManager();
    QNetworkRequest request(QUrl("https://post.imageshack.us/upload_api.php"));
    request.setRawHeader("Host", "imageshack.us");
    request.setRawHeader("Content-type", "multipart/form-data, boundary=AyV04a");
    request.setRawHeader("Cache-Control", "no-cache");
    request.setRawHeader("Accept","*/*");

    QByteArray requestData;

    requestData.append("--AyV04a\r\n");
    requestData.append("content-disposition: ");
    requestData.append("form-data; name=\"key\"\r\n");
    requestData.append("\r\n");
    requestData.append("23459IQU68b63f0be4cfcf631cc6b40b5519c6cb");
    requestData.append("\r\n");

    requestData.append("--AyV04a\r\n");
    requestData.append("content-type: ");
    requestData.append("image/png\r\n");
    requestData.append("content-disposition: ");
    requestData.append(QString("file; name=\"fileupload\"; filename=\"%1\"\r\n").arg(imagename));
    requestData.append("Content-Transfer-Encoding: binary\r\n");
    requestData.append("\r\n");
    requestData.append(picture);
    requestData.append("\r\n");

    requestData.append("--AyV04a\r\n");
    requestData.append("content-disposition: ");
    requestData.append("form-data; name=\"format\"\r\n");
    requestData.append("\r\n");
    requestData.append("json\r\n");
    requestData.append("--AyV04a--");

    manager->post(request, requestData);
    connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(uploaded(QNetworkReply*)));
    connect(manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),this,SLOT(problems()));
}

void UploadToImageShack::uploaded(QNetworkReply *response)
{
    qDebug() << "finish upload";
    QVariantMap responseMap = JSON::parse(response->readAll()).toMap();
    QVariantMap linkMap = responseMap["links"].toMap();
    QMap<QString,QString> links;
    links["Link"] = linkMap["is_link"].toString();
    links["ImageBB"] = linkMap["image_bb"].toString();
    links["ImageHtml"] = linkMap["image_html"].toString();
    links["ImageLink"] = linkMap["image_link"].toString();
    links["ThumbBB"] = linkMap["thumb_bb"].toString();
    links["ThumbLink"] = linkMap["thumb_link"].toString();
    emit linkReady(links);
}
void UploadToImageShack::problems()
{
    qDebug() << "problems with upload";
    QMap<QString,QString> links;
    emit linkReady(links);
}
void UploadToImageShack::abort()
{
 // How abort current uploading ?
}

в итоге программа получает "problems with upload" при включенном интернете.
код и ехе-шник тут : https://github.com/abodnyaUA/qimageviewer
прошу помощи
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Июнь 07, 2013, 16:49 »

Прокси?
Записан

Qt 5.11/4.8.7 (X11/Win)
mutineer
Гость
« Ответ #2 : Июнь 07, 2013, 16:52 »

А что приходит в слот problems() во втором параметре? Какие ошибки выдает?

З.Ы. Ты же в курсе что у тебя память течет?
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #3 : Июнь 07, 2013, 17:19 »

на лицо проблема с файрволом или настройками сети. как подсказывают, может быть проблема в прокси сервере.
Записан
abodnya
Гость
« Ответ #4 : Июнь 07, 2013, 18:06 »

проблемы с прокси сразу на всех тестриуемых компьютерах?

про утечку памяти, вижу. Этот блок кода писал второй разработчик, поправлю потом
Записан
mutineer
Гость
« Ответ #5 : Июнь 07, 2013, 18:22 »

Так о каких ошибках рапортует QNAM?
Записан
abodnya
Гость
« Ответ #6 : Июнь 07, 2013, 18:24 »

при попытке загрузить файл, вызывается сигнал abort
Записан
mutineer
Гость
« Ответ #7 : Июнь 07, 2013, 18:25 »

не вижу в коде сигнала abort()
Записан
abodnya
Гость
« Ответ #8 : Июнь 07, 2013, 18:51 »

т.е. не abort(), а problem()
Записан
abodnya
Гость
« Ответ #9 : Июнь 07, 2013, 18:53 »

тьфу блин.
Проблема была в том, что не положил библиотеки от OpenSSL в папку с программой
Записан
mutineer
Гость
« Ответ #10 : Июнь 07, 2013, 18:56 »

Код:
connect(manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),this,SLOT(problems()));

Не игнорируй второй параметр сигнала, выводи список ошибок хотя бы в лог
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.149 секунд. Запросов: 23.