Задать вопрос
@AlphaScript

Как правильно вставить данные на форму и отправить (На сайте)?

Всем доброго времени суток. У меня есть адрес сайта, и id полей и кнопки формы. Подскажите пожалуйста, как вставить данные в поля и нажать на кнопку. Понимаю, что реализовывать нужно с помощью POST-запроса. У меня есть код, но он не работает:
CODE
void MainWindow::requestApi(QByteArray & login, QByteArray & pass)
{

    QNetworkRequest request(QUrl("http://site.net/index.php"));
    QByteArray data;
    data.append("Content-Disposition: form-data; id=\"username\"\r\n\r\n");
    data.append(login + "\r\n");
    data.append("Content-Disposition: form-data; id=\"password\"\r\n\r\n");
    data.append(pass + "\r\n");
    QNetworkAccessManager * pManager = new QNetworkAccessManager();
    QNetworkReply * reply = pManager->post(request, data);
}


И так тоже пробовал:
void MainWindow::requestApi(QByteArray & login, QByteArray & pass)
{

    QNetworkRequest request(QUrl("http://site.net/index.php"));
    QByteArray data;

    data.append("id=\"username\"; value=\"" + login + "\"\r\n");
    data.append("id=\"password\"; value=\"" + pass + "\"\r\n");

    QNetworkAccessManager * pManager = new QNetworkAccessManager();
    QNetworkReply * reply = pManager->post(request, data);
}

p.s. Последний способ - чисто методом "тыка"


P. S. Относительно недавно перешёл на Qt, поэтому попрошу не сильно критиковать меня

Заранее всем спасибо за ответы
  • Вопрос задан
  • 109 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
SerJook
@SerJook
кодер
Вы пытаетесь отправить запрос в неправильном формате.
Вам скорее всего нужен формат application/x-www-form-urlencoded.
Нужно использовать не id полей, а их имена (name). Также возможно в запрос нужно включить кнопку отправки(submit button), если у нее есть имя. Часто на стороне сервера проверяют наличие кнопки в запросе.

QNetworkRequest request(QUrl("http://site.net/index.php"));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

QUrlQuery postData;
postData.addQueryItem("username", login);
postData.addQueryItem("password", pass);
postData.addQueryItem("submit_button", "Submit!");

QNetworkAccessManager * pManager = new QNetworkAccessManager(this);
QNetworkReply * reply = pManager->post(request, postData.toString(QUrl::FullyEncoded).toUtf8());
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы