尝试将图像(使用 POST 请求)发送到服务器,该服务器将查找图像中的某些项目并返回包含我需要的信息的 JSON 对象。
:我使用手动转换的 Base64 字符串图像处理服务器对 API 的 POST 请求,JSON 正文得到很好的解析,我使用以下代码获得了我需要的所有数据。
代码:
全选httpsClient.print(String("POST ") + url + " HTTP/1.1rn" +
"Host: " + host + "rn" +
"Content-Type: applica
tion/json" + "rn" +
"Content-Length: " + imageBase64.length() + "rnrn" +
imageBase64 + "rn" +
"Connection: closernrn");
直接从 ESP8266 SPIFF 系统发送 POST 请求中的图像文件,如前所述,现在我手动将它们转换为 base64 字符串,这不是我想要的。我在谷歌上搜索了很多,但我找不到任何例子,而且我真的不知道从哪里开始或做什么。经过大量尝试,这是我现在拥有的:
代码:
全选File imageFile;
imageFile = SPIFFS.open("/image.png", "r");
httpsClient.print(String("POST ") + url + " HTTP/1.1rn" +
"Host: " + host + "rn" +
//"Content-Type: multipart/form-data" + "rn" +
"Content-Type: image/png" + "rn" +
"Content-Disposition: form-data; name="image"; filename="image.png"" + "rn" +
//"Content-Transfer-Encoding: binary" + "rn" +
"Content-Length: " + imageFile.size() + "rnrn");
imageFile + "rn" +
"Connection: closernrn");
注释代码是我尝试过和没有尝试过的部分,不知道是否真的需要它们。我有一种强烈的感觉,我需要从图像中逐字节读取并以某种方式流式传输它,但我真的不知道如何或从哪里开始。
使用当前代码,我的输出是:
[ode]{"error_code": 400, "error": "Missing file named "image" in request POST"}[/code]
我从监听客户端得到了输出,直接在串行监视器中打印,它应该返回包含我想要的所有信息的 JSON 正文。
作为示例,这就是您在 CMD 提示符下的操作方式(这是我开始工作的 base64 图像):
代码:
全选curl -X POST "https://api.openalpr.com/v2/recognize_bytes?secret_key=YOUR_TOKEN&recognize_vehicle=0&country=eu&return_image=0&topn=1" -H "accept: application/json" -H "Content-Type: application/json" -d "YOUR_IMAGE_BYTES"
它使用 Base64,我让它工作
现在另一个用于文件图像,我还没有工作(这些发布请求只是为了让你了解这个 API 是如何工作的!):
代码:
全选curl -X POST "https://api.openalpr.com/v2/recognize?secret_key=YOUR_TOKEN&recognize_vehicle=0&country=eu&return_image=0&topn=1" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F image=@C:UsersNameDesktopimage.png;type=image/png
0