您不能在單一方法上同時使用@FormUrlEncoded和@Multipart。 HTTP請求只能有一個內容類型,並且這兩個內容類型都是 。
@FormUrlEncoded(for android)| 應用程序/ x-WWW窗體-urlencoded(網頁)
@Multipart(對於機器人)| 的multipart/form-data的(網頁)
使用這樣.....
@Multipart
@POST("photos/upload")
Call<Result> upload(@Part("Token") RequestBody token, @Part("Photo_Type") RequestBody type, @Part MultipartBody.Part file);
和在像這樣的呼叫.....
String token="your string";
File file = new File(path);
RequestBody tokenRequest = RequestBody.create(MediaType.parse("text/plain"), token);
RequestBody type = RequestBody.create(MediaType.parse("text/plain"), true + "");
MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", file.getName(), RequestBody.create(MediaType.parse("image/*"), file));
Call<Result> call = qikGrubApi.upload(tokenRequest, type, filePart);
call.enqueue(new Callback<Result>() {
@Override
public void onResponse(Call<Result> call, Response<Result> response) {
progress.dismiss();
if (response.isSuccessful()) {
if (response.body().getSuccess()) {
nextPage(response.body().getMessage());
} else
Toast.makeText(UploadActivity.this, response.body().getMessage(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(UploadActivity.this, "Sorry for inconvince server is down", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<Result> call, Throwable t) {
progress.dismiss();
Toast.makeText(UploadActivity.this, "Check your Internet connection", Toast.LENGTH_SHORT).show();
}
});
}
注意: - 使用上面的文件POST例子,讓我知道,如果你堅持任何地方。
欲瞭解更多詳細信息請點擊this
編輯: -
對於您的情況下使用這樣的.....
@Multipart
@POST("registration.php")
Call<Signup> getSignupResponse(@Part("email") RequestBody email,
@Part("lname") RequestBody lname,
@Part("fname") RequestBody fname,
@Part("password") RequestBody password,
@Part MultipartBody.Part filename);
,並使用改進的呼叫這樣的.. ...
File file = new File(path);
RequestBody emailRequest = RequestBody.create(MediaType.parse("text/plain"), email);
RequestBody lnameRequest = RequestBody.create(MediaType.parse("text/plain"), lname);
RequestBody fnameRequest = RequestBody.create(MediaType.parse("text/plain"), fname);
RequestBody passwordRequest = RequestBody.create(MediaType.parse("text/plain"), password);
MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", file.getName(), RequestBody.create(MediaType.parse("image/*"), file));
Call<Signup> call = qikGrubApi.upload(emailRequest, lnameRequest ,fnameRequest , passwordRequest, filePart);
call.enqueue(new Callback<Signup>() {
@Override
public void onResponse(Call<Signup> call, Response<Signup> response) {
progress.dismiss();
if (response.isSuccessful()) {
if (response.body().getSuccess()) {
nextPage(response.body().getMessage());
} else
Toast.makeText(UploadActivity.this, response.body().getMessage(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(UploadActivity.this, "Sorry for inconvince server is down", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<Signup> call, Throwable t) {
progress.dismiss();
Toast.makeText(UploadActivity.this, "Check your Internet connection", Toast.LENGTH_SHORT).show();
}
});
}
remove'@FormU rlEncoded'註釋..... – sushildlh
@sushildlh我試過,如果我刪除@ FormUrlEncoded比我得到這個>> java.lang.IllegalArgumentException:@字段參數只能用於表單編碼。 –
使用'@ Part'而不是'@ Field' .......... – sushildlh