У меня есть программа Qt, которая хранит всю информацию о моей небольшой (крошечной) компании в базе данных sql, и я на протяжении многих лет адаптировал ее для ведения всех моих бухгалтерских работ, счетов, спецификаций и т. Д.
Одним нажатием кнопки я могу получить все необходимые данные sql для расчета квартального возврата НДС, но сейчас нам нужно будет подать все данные в электронном виде, а не просто рассчитать их. У меня есть все необходимые данные, это всего лишь случай отправки по HTTP с использованием json (о котором я знаю немного / ничего соответственно).
Я достаточно мал, чтобы мне не нужно было делать эту отправку в данный момент, но время, скорее всего, придет, поэтому я пробую самые простые запросы в песочнице HMRC в качестве отправной точки.
На этой странице показано, как выполнить запрос hello world в Java, поэтому я пытаюсь сделать то же самое с Qt с C ++.
Я попробовал следующее, которое реагирует на нажатие кнопки, и я, конечно, настроил слот для ответа:
void MainWindow::hello()
{
QJsonObject json;
QString rs("https://test-api.service.hmrc.gov.uk/hello/world");
QNetworkRequest request
{
QUrl(rs)
};
request.setHeader(QNetworkRequest::ContentTypeHeader,"application/vnd.hmrc.1.0+json");
request.setUrl(QUrl(rs));
manager->get(request);
}
и основное окно init:
manager = new QNetworkAccessManager();
QObject::connect
(manager, &QNetworkAccessManager::finished, this, [=](QNetworkReply *reply)
{
if (reply->error())
{
ui->debugText->appendHtml(reply->errorString());
return;
}
QString answer = reply->readAll();
ui->debugText->appendHtml(answer);
}
);
На что я получаю ответ:
Ошибка передачи https://test -api.service.hmrc.gov.uk / hello / world -
сервер ответил: неприемлемо
Я предполагаю, что это означает, что я сейчас общаюсь с сервером, но я не знаю, что означает это краткое сообщение об ошибке!
Java на веб-странице HMRC выглядит следующим образом:
// construct the GET request for our Hello World endpoint
HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(
"https://test-api.service.hmrc.gov.uk/hello/world");
request.addHeader("Accept", "application/vnd.hmrc.1.0+json");
// execute the request
HttpResponse response = client.execute(request);
// extract the HTTP status code and response body
int statusCode = response.getStatusLine().getStatusCode();
String responseBody = EntityUtils.toString(response.getEntity());
Достаточно ли этой информации, чтобы кто-то указывал мне правильное направление того, что я делаю неправильно, пожалуйста? Подозреваю, я упускаю фундаментальный момент здесь.