Korzystanie Retrofit 2.0.1, nie jest funkcją wywołania interfejsu API w moim zdefiniowane w Android App:prośba Modernizacja 2 Multipart POST wysyła dodatkowe cytaty PHP
@Multipart
@POST("api.php")
Call<ResponseBody> doAPI(
@Part("lang") String lang,
@Part("file\"; filename=\"image.jpg") RequestBody file
);
wyślę prośbę tak:
Wywołanie połączenia = service.doAPI ("eng", imageFile);
gdzie imageFile
jest RequestBody
utworzone za pomocą obiektu File
. Część obrazu do przesyłania nie stanowi problemu, a część @Part("lang") String lang
ma dodatkowe cytaty na serwerze.
Na stronie PHP jest napisane następująco:
$lang = trim($_POST['lang']);
która zwraca "eng"
. Dlaczego istnieje dodatkowy podwójny cudzysłów otaczający ciąg?
oczywiście mogę rozebrać tylną i przednią cudzysłów, ale to dziwne, aby to zrobić
Powiązane Problem: https://github.com/square/retrofit/issues/1210
Jeśli projekt korzysta Retrofit 2, IMO można zobaczyć moją odpowiedź na http://stackoverflow.com/questions/36491096/retrofit-multipart-request-required-multipartfile-parameter-file-is-not-pre/36514662 # 36514662, pls zwróć uwagę na 'Call postFile (@Part MultipartBody.Part file, @Part ("descr iption ") Opis RequestBody);' –
BNK
Tak, używając Retrofit 2. Czy wymagane jest użycie 'MultipartBody.Part'? jako 'RequestBody' działa również do przesyłania plików. Jaka jest różnica? – Raptor
Ah, nie mam na myśli części obrazu, po prostu oznacz "@Part (" description ") RequestBody description' zamiast' @Part ("lang") String lang', ponieważ ta część jest twoim problemem :) – BNK