2016-05-14 14 views
3

私は、ユーザーがリストから任意の数の国を選択する必要があり、選択した名前をマルチパートで送信する必要があるアプリケーションを開発しています。Retrofitを使用してMultipartを通じてString []を送信することはできますか?

私はString []と一緒にファイルをアップロードしませんが、マルチパートでなければ情報をアップロードするルートはなく、Webサーバーの動作方法については何も言及していません。私は単に配列としてそれを送信しようとしてきました

、などのArrayListやJsonArray:

@Headers({ 
    "Connection: Keep-Alive", 
}) 
@Multipart 
@PUT("/user/{id}") 
String updateUser(@Path("id") int userId, @Part("user[countries]") String[] countries); 

は、私はまた、this solutionをしようとしましたが、私はそれを誤解いずれか、またはそれが動作しません。ここで私が使用しようとしたコードは次のとおりです。

ArrayList<String> countries = CountryManager.getInstance().getSelectedCountryIds(); 
RequestBody requestBody; 
LinkedHashMap<String, RequestBody> hashMap = new LinkedHashMap<>(); 

for(int i = 0; i < countries.size(); i++) { 
    requestBody = RequestBody.create(MediaType.parse("text/plain"), countries.get(i)); 
    hashMap.put("countries["+i+"]", requestBody); 
} 

し、それに応じて改造方法を変更:

@Headers({ 
    "Connection: Keep-Alive", 
}) 
@Multipart 
@PUT("/user/{id}") 
String updateUser(@Path("id") int userId, @PartMap() Map countries); 

をしかし、私はエラーretrofit.RetrofitErrorを得ているすべての試みに:パート本体はNULLであってはなりません。

私はまた、変更点の変更ログには、「新規:繰り返し可能な配列をサポートし、を使用してを使用してパラメータをサポートしています」と述べましたが、掘り下げた後、私のコードでそれを実装する方法がわからず、マルチパートで配列を送ることについて言及しているチュートリアルを見つけることができませんでした。

このようなことは単に不可能ですか?

+0

PartMapアノテーションを使用したソリューションは正しいと思われます。私はいくつかのアプリでそれを使用し、正常に動作します。あなたはすべての国がヌルではないと確信していますか? – Pablo

答えて

2

。マルチパートでarraylistを送るのに@Query("someKey[]")を使うことができます。 Heresは実際の例です。

@Multipart 
    @POST("./") 
    Call<JsonElement> addSubEvent(@Part(EndAPI.USE_CASE) RequestBody useCase, 
            @Query("event_id[]") ArrayList<String> event_id, 
            @Query("user_id[]") ArrayList<String> user_id, 
            @Query("name[]") ArrayList<String> name, 
            @Query("date_time[]") ArrayList<String> date_time, 
            @Part("token") RequestBody token, 
            @Part MultipartBody.Part... profilePic); 

希望これは、回答を求める人に役立ちます。

+0

PHPでarraylistを解析する方法 – bipin

1

だけのアイテムこのよう

@Part( "アイテム[]")のリストを使用します。私はこの答えのために遅れる知っ

List<String> items = new ArrayList(); 
    items.add("1"); 
    items.add("2"); 
    items.add("3"); 

@Multipart 
@POST("/") 
Call<Result> yourMethod(@PartMap() Map<String, RequestBody> partMap, @PartMap() Map<String, RequestBody> map, @Part MultipartBody.Part file, @Part("items[]") List<String> items); 
+0

phpでこの配列を解析する方法は? – bipin

関連する問題