HMRC MTD Hello World с Qt - PullRequest
       3

HMRC MTD Hello World с Qt

0 голосов
/ 27 марта 2019

У меня есть программа 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());

Достаточно ли этой информации, чтобы кто-то указывал мне правильное направление того, что я делаю неправильно, пожалуйста? Подозреваю, я упускаю фундаментальный момент здесь.

1 Ответ

1 голос
/ 27 марта 2019

В вашем примере с Java вы устанавливаете заголовок HTTP «Принять».В своем фрагменте C ++ / Qt вы устанавливаете заголовок «Content-Type».

Возможно, вы захотите адаптировать свой код так, чтобы он соответствовал вашему рабочему примеру Java:

QNetworkRequest request { QUrl(rs) };

request.setRawHeader(QByteArray("Accept"), QByteArray("application/vnd.hmrc.1.0+json"));
manager->get(request);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...