2017-07-24 2 views
0

Ich möchte einen API-Aufruf mit Retrofit machen. Der Anruf wird grundsätzlich einige Daten zusammen mit einem Bild senden. Dies ist, was ich geschrieben habe:Android Retrofit Nur eine Codierung Annotation erlaubt

@POST("notes/new") 
@Multipart 
@FormUrlEncoded 
Call<Note> getData (@Field("title") String title, 
        @Field("note") String note, 
        @Header("Authorization") String auth, 
        @Part MultipartBody.Part file, 
        @Part("file")RequestBody image); 

Wie zu sehen ist, wird der Code hat zwei Codierungen: das @Multipart Hochladen von Bildern zu unterstützen und @FormurlEncoded muss verwendet werden, wenn die @Field Annotation verwenden. So kann ich nicht arbeiten, wenn irgendwelche von diesen abwesend sind YET Retrofit erlaubt nur eine Kodierung Annotation zu einem Zeitpunkt. Wie gehe ich vor? Bitte helfen Sie

Antwort

0

Soweit ich weiß, können Sie nicht sowohl FormUrlEncoded und Multipart.

etwas Ihre Schnittstelle definieren wie folgt aus:

@POST("notes/new") 
@Multipart 
Call<Response> postFile(@Part MultipartBody.Part title,..., @Part MultipartBody.Part file,...); 

Und für jeden Parameter, der @Field hatte würden Sie dies in Ihrem Code tun, wo Sie den Service anrufen:

String title = "MyTitle"; 
final MultipartBody.Part titlePart = MultipartBody.Part.createFormData("title", title); 
0

fand ich eine bessere Weg nach dem ausprobieren. Hoffe, das hilft jeder anderen Person da draußen

@POST("notes/new") 
@Multipart 
Call<Note> getData (@Part ("title") String title, 
        @Part("note") String note, 
        @Header("Authorization") String auth, 
        @Part MultipartBody.Part file, 
        @Part("file")RequestBody image);