改造曾與處理文件,所以我真的建議你到庫從β1的升級到Beta2中它工作得更好一些問題。
在beta2中,你讓你的API是這樣的 -
public interface ApiInterface {
@Multipart
@POST ("/api/Accounts/editaccount")
Call<User> editUser (@Header("Authorization") String authorization, @Part("file\"; filename=\"pp.png\" ") RequestBody file , @Part("FirstName") RequestBody fname);
}
在「RequestBody文件」的一部分「文件」是,你需要在你的服務器端訪問文件實體名稱。
這是你如何把這種要求 -
File file = new File(imageUri.getPath());
RequestBody fbody = RequestBody.create(MediaType.parse("image/*"), file);
RequestBody name = RequestBody.create(MediaType.parse("text/plain"), firstNameField.getText().toString());
Call<User> call = client.editUser(getToken(), fbody, name, id);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(retrofit.Response<User> response, Retrofit retrofit) {
}
@Override
public void onFailure(Throwable t) {
}
});
這是代碼的副本ayon115在改裝庫討論寫了這個鏈接 - https://github.com/square/retrofit/issues/1063
我用同樣的概念,它爲我工作順利。
我真的建議你去鏈接並閱讀有關庫和beta1到beta2之間區別的討論。
如果您在測試服務器/客戶端時遇到問題。
你可以去www.requestb.in和部署一個測試服務器,所以你可以從你的客戶端測試你的HTTP請求,這樣你就不需要每次:)
,並測試運行服務器您的客戶端可以使用POSTMAN工具向您的服務器發出請求。
希望這會有所幫助。