私は、ユーザーがリストから任意の数の国を選択する必要があり、選択した名前をマルチパートで送信する必要があるアプリケーションを開発しています。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であってはなりません。
私はまた、変更点の変更ログには、「新規:繰り返し可能な配列をサポートし、を使用してを使用してパラメータをサポートしています」と述べましたが、掘り下げた後、私のコードでそれを実装する方法がわからず、マルチパートで配列を送ることについて言及しているチュートリアルを見つけることができませんでした。
このようなことは単に不可能ですか?
PartMapアノテーションを使用したソリューションは正しいと思われます。私はいくつかのアプリでそれを使用し、正常に動作します。あなたはすべての国がヌルではないと確信していますか? – Pablo