1
私は以下のコードを使用して自分のサーバーに画像やその他の詳細をアップロードしようとしている問題を抱えている:レトロフィット - エラー400
public static final String APP_JSON = "Content-Type: application/json";
@Multipart
@Headers({ApiClient.APP_JSON})
@POST("relatorio/{token}")
Call<JsonObject> uploadJson(@Path("token") String token, @Part("json") JsonObject auditoria, @Part List<MultipartBody.Part> files);
それは常に原因でSyntaxErrorにERRO 400を返す:予期しないトークン-<br>
。しかし、私がRequestBodyとして詳細だけを送っても動作します。
アップロードする画像の配列を自分のサーバーで定義したとおりに構築する必要があります。このように、私はそれを使用しています:
Call<JsonObject> call = ApiClient.get().uploadJson(details.get(KEY_TOKEN), json, prepare());
call.enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
Log.e("Status", new Gson().toJson(response));
}
@Override
public void onFailure(Call<JsonObject> call, Throwable t) {
Log.e("Status", "Faild");
Log.e("UPDATErr", new Gson().toJson(t));
}
});
なぜそれが動作していない上の任意のヒント:その後
private List<MultipartBody.Part> prepare(){
Set<String> keys = JsonFormFragmentPresenter.imagesList.keySet();
List<MultipartBody.Part> parts = new ArrayList<>();
for(String k : keys){
for(String path : JsonFormFragmentPresenter.imagesList.get(k)){
if(!path.equals(null) && !path.equals("")){
File image = new File(path);
RequestBody requestFile = RequestBody.create(
MediaType.parse("multipart/form-data"), image
);
Log.e("Test", (requestFile == null) + "");
parts.add(MultipartBody.Part.createFormData("imagens", image.getName(), requestFile));
}
}
}
JsonFormFragmentPresenter.imagesList.clear();
return parts;
}
私は常に400を返して電話をかけますか?あなたは、コンテンツタイプと@Header注釈を使用している
今はerr104 –
104を投げていますか?本気ですか? –
はい、エラー(104)接続がピアによってリセットされました –