首页
学习
活动
专区
圈层
工具
发布

HMRC MTD Qt
EN

Stack Overflow用户
提问于 2019-03-27 13:26:43
回答 1查看 87关注 0票数 0

我有一个Qt程序,它将我所有的小公司信息存储在一个sql数据库上,多年来我一直在为我的所有会计工作、发票、BOMs等量身定做。

只要按下按钮,我就可以得到所有必要的sql数据来计算季度增值税回报,但我们现在必须以电子方式提交所有数据,而不仅仅是计算数据。我有所需的所有数据,这只是一个使用json提交HTTP的例子(我对此了解很少/不了解)。

我很小,所以我现在不需要做这个提交,但时间可能会到来,所以我正在尝试HMRC沙箱中最基本的请求作为起点。

页面上,它向您展示了如何使用Java请求,因此我也尝试使用C++对Qt做同样的处理。

我尝试了以下方法来响应按钮的按压,当然,我已经设置了一个插槽来处理响应:

代码语言:javascript
复制
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);


}

主窗口是这样的:

代码语言:javascript
复制
 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 - server错误答复:不可接受

我认为这意味着我现在正在与服务器通信,但我不知道这个简洁的错误消息意味着什么!

HMRC网页上的Java如下:

代码语言:javascript
复制
// 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());

有足够的信息让人指出我做错了什么吗?怀疑我在这里遗漏了一个基本点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-27 13:45:14

在Java示例中,您正在设置HTTP头"Accept“。在C++/Qt代码段中,您正在设置“Content”标题。

您可能希望像这样调整代码,以匹配Java工作示例:

代码语言:javascript
复制
QNetworkRequest request { QUrl(rs) };

request.setRawHeader(QByteArray("Accept"), QByteArray("application/vnd.hmrc.1.0+json"));
manager->get(request);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55378362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档