从C ++调用Microsoft vision API时出错

问题描述 投票:0回答:1

我想从C ++调用Microsoft Vision API,我正在使用cpr library发出请求。现在我运行以下代码:

#include <iostream>
#include <cpr/cpr.h>
#include <json.hpp>

int main(int argc, char** argv) {
    auto response = cpr::Post(
        cpr::Url{"https://westcentralus.api.cognitive.microsoft.com/vision/v1.0/analyze"},
        cpr::Body{{"url","https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Broadway_and_Times_Square_by_night.jpg/450px-Broadway_and_Times_Square_by_night.jpg"}},
        cpr::Header{{"Ocp-Apim-Subscription-Key", "xxxxxxxx"}}
    );
    std::cout << response.status_code ;
    auto json = nlohmann::json::parse(response.text);
    std::cout << json.dump(4) << std::endl;
}

虽然代码是由cmake运行的,所以make成功了。但是当我执行可执行文件时,出现以下错误:

terminate called after throwing an instance of 'std::length_error'
what():  basic_string::_M_create
Aborted (core dumped)

PS:可以找到Microsoft Vision API的文档here所以,告诉我,如果我犯了一些错误。如果有人知道如何在QtQuick应用程序中发送http请求,请告诉我

c++ microsoft-cognitive
1个回答
0
投票

你能试试吗?

auto my_json = nlohmann::json::object({
    { "url","https://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Broadway_and_Times_Square_by_night.jpg/450px-Broadway_and_Times_Square_by_night.jpg" }
});

response = cpr::Post(
    cpr::Url{"https://westcentralus.api.cognitive.microsoft.com/vision/v1.0/analyze"},
    cpr::Body{ my_json.dump() },
    cpr::Header{{"Ocp-Apim-Subscription-Key", "XXXXXX"}}
);
© www.soinside.com 2019 - 2024. All rights reserved.