我有一個 API POST 請求,它接收帶有文本(字串)和 1 個影像檔案的表單/資料。在郵遞員中,這就是它的樣子,而且效果很好:)

我正在嘗試通過 OKHTTP 在 android 應用程式上通過 POST 請求發送相同的內容。這是我寫的代碼:
MediaType mediaType = MediaType.parse(getMimeType(imageFile.toURI().toURL().toString()));
requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("imageFile", imageFile.getName(), RequestBody.create(imageFile, mediaType))
.addFormDataPart("machineKey", machineKey)
.addFormDataPart("authToken", authToken)
.addFormDataPart("UIID", UIID)
.addFormDataPart("localItemID", localItemID)
.addFormDataPart("itemName", itemName)
.addFormDataPart("itemDescription", itemDescription)
.addFormDataPart("itemPrice", itemPrice)
.addFormDataPart("itemStock", itemStock)
.addFormDataPart("itemAge", itemAge)
.build();
Request request = new Request.Builder()
.url(URLString)
.post(requestBody)
.build();
System.out.println("POST: calling: " URLString);
Response response = client.newCall(request).execute();
這里有一些注意事項要記住:)
imageFile 是影像的檔案(并且檔案保證始終存在,并且可以訪問)
所有字串永遠不會為空
(getMimeType(imageFile.toURI().toURL().toString())將回傳,"image/jpeg"或者"image/*",我都嘗試過
我正在異步運行此代碼,此代碼將正確發布字串值,但由于某種原因無法正確發布影像檔案。有任何想法嗎?謝謝!
uj5u.com熱心網友回復:
您缺少設定內容型別請求標頭:
.addHeader("content-type", "multipart/form-data")
uj5u.com熱心網友回復:
實際上想通了......原來我發送的檔案名沒有經過清理,所以一些正在發送的檔案的檔案名中有非法字符,所以我得到了修復!謝謝!:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/411109.html
標籤:
