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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QHttp: передача методом post  (Прочитано 9317 раз)
Perchilla
Гость
« : Декабрь 02, 2005, 23:48 »

Не подкинет кто - нибудь примерчик передачи строки методом post для QT4? Get - не катит, строка длинная, в примерах ничего нет, а пример из книги Бланшета что - то не работает  :? .
Записан
crocus
Гость
« Ответ #1 : Декабрь 05, 2005, 10:04 »

Ни post, ни request что-не проходит.
void HttpWindow::uploadFile()
{
    QString fileName = QFileDialog::getOpenFileName(this,
                                tr("OpenFile"),
                                openFilesPath,
                                tr("All Files (*);;Text Files (*.txt)"));
    if (!fileName.isEmpty())
    openFilesPath = fileName;
    QFileInfo path(openFilesPath);
    QString fileName1 = path.fileName();
    QStringList lines;
    QByteArray bytes;
    file = new QFile(fileName1);
    if ( !file->open(QIODevice::ReadOnly) ) {
       QMessageBox::information(this, tr("HTTP"),
                                 tr("Unable to open the file %1: %2.")
                                 .arg(fileName1).arg(file->errorString()));
     
           }
  QHttpRequestHeader header("POST", "/upload.php");
        header.setValue("Host", "foliant");
        header.setContentType("application/x-www-form-urlencoded");
        QString encodedTopic = fileName1;
        QString searchString = "file=" + encodedTopic;
        http->setHost("foliant");
        httpRequestAborted = false;
        http->request(header, searchString.toUtf8(), file);        
        urlLineEdit->setText(encodedTopic);    
  }
На хлам в коде не обращайте внимания это заготовка.
Записан
Perchilla
Гость
« Ответ #2 : Декабрь 07, 2005, 08:23 »

Благодарю за ответ! Сейчас попробую.
Записан
crocus
Гость
« Ответ #3 : Декабрь 08, 2005, 05:39 »

Вот блин лабуда, сервер пишет что все нормально, PHP тоже ошибок не выдает (правда поля referer и user-agent пустые "-"), а если аплодить через страницу нет проблем referer - "страница с которой отправляем"


void HttpWindow::uploadFile()
{
    QString fileName = QFileDialog::getOpenFileName(this,
                                tr("OpenFile"),
                                openFilesPath,
                                tr("All Files (*);;Text Files (*.txt)"));
    if (!fileName.isEmpty())
    openFilesPath = fileName;
    QFileInfo path(openFilesPath);
     QString fileName1 = path.fileName();
     userfile = new QFile(openFilesPath);
    if ( !userfile->open(QIODevice::ReadOnly) ) {
       QMessageBox::information(this, tr("HTTP"),
                                 tr("Unable to open the file %1: %2.")
                                 .arg(openFilesPath).arg(userfile->errorString()));
     
           }
        QHttpRequestHeader header("POST", "/upload.php", 1, 1);
        header.setValue("Host", "ваш_хост");
        header.setValue("Content-type", "multipart/form-data,  boundary=AaB03x");
        header.setValue("Cache-Control", "no-cache");
        header.setValue("Accept","*/*");
        QByteArray byt(openFilesPath.toUtf8());
        QByteArray bytes;
        bytes.append("--AaB03x\r\n");
        bytes.append("content-disposition: ");
         bytes.append("form-data; name=\"userfile\"; filename=\"" + byt+ "\"\r\n");  
         bytes.append("Content-Transfer-Encoding: binary\r\n");
         bytes.append("\r\n");      
        bytes.append(userfile->readAll());
        userfile->close(); // the file is opened earlier in the code
        bytes.append("\r\n");
        bytes.append("--AaB03x--\r\n");
        int contentLength = bytes.length();
        header.setContentLength(contentLength);
        http->setHost("foliant");
        httpRequestAborted = false;
        httpGetId = http->request(header, bytes);        
        urlLineEdit->setText(openFilesPath); // проверка файла и пути  
    }

Победа разума. Ошибка в коде исправлена можно пользоваться.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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