从C++调用Microsoft视觉 API 时出错

Error in calling Microsoft vision API from C++

本文关键字:API 出错 视觉 Microsoft C++ 调用      更新时间:2023-10-16

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

#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的文档可以在这里找到所以,告诉我我是否做错了什么。另外,如果有人知道如何在QtQuick应用程序中发送http请求,请告诉我

你能试试这个吗?

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"}}
);