我正在嘗試使用 Microsoft Custom Vision了解更多。我需要發出 HTTP 請求來發送要分析的圖像。我成功地從 C# 發出請求,所以我知道信息是正確的。但是,當我嘗試在 Java 中發出相同的請求時,我收到了 HTTP 400 錯誤。我相信我沒有在 Java 中正確處理請求。真的嗎?以下是片段。C#:var client = new HttpClient();client.DefaultRequestHeaders.Add("Prediction-Key", PredicitionKey);using (var content = new ByteArrayContent(byteData)){ content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); response = await client.PostAsync(url, content); Console.WriteLine(await response.Content.ReadAsStringAsync());}爪哇:HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestProperty("Prediction-Key", predicitionKey);connection.setRequestProperty("Content-Type", "application/octet-stream");connection.setDoInput(true);connection.setDoOutput(true);connection.getOutputStream().write(data.getData());connection.connect();Reader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
1 回答

慕后森
TA貢獻1802條經驗 獲得超5個贊
一、更換
connection.connect();
和
connection.getResponseCode();
如果它仍然不起作用,那么標題就是問題所在。
由于 C# 代碼運行成功
您的 C# 請求和提琴手中的 Java 請求之間的唯一區別是 Java 請求有兩個額外的標頭(Accept、User-Agent)。
嘗試明確設置它們
connection.setRequestProperty("Accept", "*/*"); connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36");
如果仍然不起作用,請嘗試刪除這兩個標頭或檢查您在請求正文中發送的數據。
添加回答
舉報
0/150
提交
取消