Russian Qt Forum

Qt => Работа с сетью => Тема начата: abodnya от Июнь 07, 2013, 16:45



Название: Windows не дает интернет доступ программе
Отправлено: 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
прошу помощи


Название: Re: Windows не дает интернет доступ программе
Отправлено: GreatSnake от Июнь 07, 2013, 16:49
Прокси?


Название: Re: Windows не дает интернет доступ программе
Отправлено: mutineer от Июнь 07, 2013, 16:52
А что приходит в слот problems() во втором параметре? Какие ошибки выдает?

З.Ы. Ты же в курсе что у тебя память течет?


Название: Re: Windows не дает интернет доступ программе
Отправлено: Fregloin от Июнь 07, 2013, 17:19
на лицо проблема с файрволом или настройками сети. как подсказывают, может быть проблема в прокси сервере.


Название: Re: Windows не дает интернет доступ программе
Отправлено: abodnya от Июнь 07, 2013, 18:06
проблемы с прокси сразу на всех тестриуемых компьютерах?

про утечку памяти, вижу. Этот блок кода писал второй разработчик, поправлю потом


Название: Re: Windows не дает интернет доступ программе
Отправлено: mutineer от Июнь 07, 2013, 18:22
Так о каких ошибках рапортует QNAM?


Название: Re: Windows не дает интернет доступ программе
Отправлено: abodnya от Июнь 07, 2013, 18:24
при попытке загрузить файл, вызывается сигнал abort


Название: Re: Windows не дает интернет доступ программе
Отправлено: mutineer от Июнь 07, 2013, 18:25
не вижу в коде сигнала abort()


Название: Re: Windows не дает интернет доступ программе
Отправлено: abodnya от Июнь 07, 2013, 18:51
т.е. не abort(), а problem()


Название: Re: Windows не дает интернет доступ программе
Отправлено: abodnya от Июнь 07, 2013, 18:53
тьфу блин.
Проблема была в том, что не положил библиотеки от OpenSSL в папку с программой


Название: Re: Windows не дает интернет доступ программе
Отправлено: mutineer от Июнь 07, 2013, 18:56
Код:
connect(manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),this,SLOT(problems()));

Не игнорируй второй параметр сигнала, выводи список ошибок хотя бы в лог