我想从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请求,请告诉我
你能试试吗?
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"}}
);