Sử dụng Retrofit 2.0.1, có một chức năng gọi trong giao diện API của tôi được xác định trong Android App:Retrofit 2 Multipart POST yêu cầu gửi báo giá thêm để PHP
@Multipart
@POST("api.php")
Call<ResponseBody> doAPI(
@Part("lang") String lang,
@Part("file\"; filename=\"image.jpg") RequestBody file
);
Tôi gửi yêu cầu như thế này:
Cuộc gọi gọi = service.doAPI ("eng", imageFile);
trong đó imageFile
là RequestBody
được tạo với đối tượng File
. Phần hình ảnh tải lên không có vấn đề, trong khi phần @Part("lang") String lang
có thêm dấu ngoặc kép trong máy chủ.
Trong bên PHP, nó được viết như sau:
$lang = trim($_POST['lang']);
trả về "eng"
. Tại sao có thêm một dấu nháy kép bao quanh chuỗi?
dĩ nhiên tôi có thể tước dấu và dấu ngoặc kép hàng đầu, nhưng đó là lạ để làm như vậy
Issue liên quan: https://github.com/square/retrofit/issues/1210
Nếu dự án của bạn sử dụng Retrofit 2, IMO, bạn có thể xem câu trả lời của tôi tại http://stackoverflow.com/question/36491096/retrofit-multipart-request-required-multipartfile-parameter-file-là-không-trước/36514662 # 36514662, hãy chú ý đến 'Call postFile (@Part MultipartBody.Part file, @Part ("descr iption ") Mô tả RequestBody);' –
BNK
Có, sử dụng Retrofit 2. Có cần sử dụng 'MultipartBody.Part' không? như 'RequestBody' cũng đang hoạt động để tải lên tệp. Sự khác biệt là gì? – Raptor
Ah, tôi không có nghĩa là phần hình ảnh, chỉ có nghĩa là '@Part (" description ") Mô tả RequestBody' thay vì' @Part ("lang") Chuỗi lang', bởi vì phần này là vấn đề của bạn :) – BNK