一般背景:我正在開發一個物聯網應用程式,我從連接到 SBC 的 ESP32 上傳影像。上傳是通過第三方后端開發人員提供的 API 完成的。上傳 API 通過其他媒介(例如 Postman、python 請求庫、python http 客戶端庫)作業
ESP32 通過 UART 連接到 SBC。我在 SBC 上構造/生成 HTTP 請求并將其作為位元組發送。我在 ESP32 上撰寫了一個函式,可以將位元組作為通用 HTTP 請求發送到指定的 URL。然后它將回應字串發送回 SBC。
所有這些都有效。對于小的請求,我沒有遇到任何問題。我可以下載影像等。
但是,在上傳影像時,我沒有得到回應,并且最終在 30 秒后超時。我檢查了沒有超時僅供參考,但沒有回應。
我從服務器端檢查。看來我的請求已成功,服務器正在向我發送帶有影像 URL 的 200。使用該 URL,我能夠驗證影像是否已成功上傳。
但是,我沒有在微控制器上收到此回應。
不確定是什么問題。關于我能做什么的任何建議?
我不能給出代碼,但我會發送一個一般結構:
ESP32
-> Receives URL, port, length of request
-> Connects to server and reads the request from UART and writes to server
-> Wait for response after response is sent
Python 原始 http
POST (server path) HTTP/1.1
Host: (url)
correlation-id: test5
Content-Type: multipart/form-data; boundary=WebKitFormBoundary7MA4YWxkTrZu0gW
Authorization: Bearer (access token)
Content-Length: 268
--WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="portraits"; filename="name"
Content-Type: image/jpeg
(data)
--WebKitFormBoundary7MA4YWxkTrZu0gW--
編輯1:所以,結果不僅是“上傳圖片”,其他一些請求也表現類似。我們的服務器有很多微服務。用 nodeJS 撰寫的具有超過 1 個重定向的服務不起作用...?
uj5u.com熱心網友回復:
我弄清楚了問題所在,希望它能幫助其他面臨同樣問題的人。此外,我對使用不同身份驗證方法的后端服務器的一些請求有效
我一直在使用郵遞員代碼生成生成原始 HTTP,但事實證明郵遞員沒有添加一些與更復雜的服務器通信所需的標頭。
我的意思是,如果我托管一個本地服務器,上面的代碼就可以作業。我已經這樣測驗過
解決我的問題的是添加這些標題:
POST (server path) HTTP/1.1
Host: (server URL)
User-Agent: ESP32
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
correlation-id: test
Authorization: Bearer (access_token)
Content-Length: 146360
Content-Type: multipart/form-data; boundary=af59ef02d60cd0efefb7bc03db1f4ffc
--af59ef02d60cd0efefb7bc03db1f4ffc
Content-Disposition: form-data; name="portraits"; filename="(name)"
Content-Type: image/jpeg
(data)
--af59ef02d60cd0efefb7bc03db1f4ffc--
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/498123.html
標籤:节点.js http 亚马逊-s3 esp32 UART
上一篇:如果我重用一個自定義客戶端,該客戶端向vertx端點中的外部服務發出請求,一個請求中的用戶例外會阻止另一個用戶的例外嗎?
下一篇:與RestSharp檔案相反,request.AddFile不接受FileParameter作為AddFile的引數。找不到有關如何遷移的任何檔案。有任何想法嗎?