我试图在同一个API请求中发布正文和部分数据
如下所示
@Multipart
@POST("AccountService/MultipartProfileImageUpload")
Call<String> updateProfilePic(@Body UserIdCredentials userIdCredentials,@Part MultipartBody.Part file);
但它不起作用,我出错了
@正文参数不能与窗体或多部分编码一起使用。(参数#1)
完成错误日志
07-31 05:01:01.644 6315-6315/android.os.E/AndroidRuntime: FATAL EXCEPTION: main Process:ooper.loop, PID: 6315ooper.java:135RuntimeException:失败交付结果ResultInfo{who=android: fra片段: 1,请求=3,结果=-1, data=Intent{(有额外功能)}}到活动{android.app.}:hread.mainIllegalArgumentException:@body参数不能与表单或多部分编码一起使用。(参数#1)方法ApiIhread.java:5343ProfilePic atjava.lang.reflect.ActivityTethod.invoke结果(ActivityTjava.lang.reflect.)atethod.invokeActivityTethod.java:372SendResult(ActivityThread.java:3702)atandroid.app.ActivityThread.access1300美元(ActivityThread.java:155)atandroid.app.ActivityThread$H. handleMessage(ActivityThread.java:1366)atandroid.os.Handler.dispatch消息(Handler.java:102)atcom.orbiosolutions.yabeeeLcom.orbiosolutions.yabeee(Ljava.lang.)atcom.orbiosolutions.yabeee/com.orbiosolutions.yabeee.Activities.HomeActivityActivityTjava.lang.(ActivityTnterface.update)atandroid.app.Mhread.deliver(Native Method)athread.java:3659Mandroid.app.(Mhread.handle)ZygoteInit. main(ZygoteInit. java: 700)由:java. lang引起。IllegalArgumentException:@主体参数不能与表单或多部分编码一起使用。(参数#1)用于改造2时的方法ApiInterface. updateProfilePic。改造2时的ServiceMethod$Builder. method Error(ServiceMethod. java: 752)。改造2时的ServiceMethod$Builder. method Error(ServiceMethod. java: 743)。改造2时的ServiceMethod$Builder.参数错误(ServiceMethod. java: 761)。改造2时的ServiceMethod$Builder. parseParameterAnnoation(ServiceMethod. java: 701)。改造2时的ServiceMethod$Builder. parseParameter(ServiceMethod. java: 336)。改造2时的ServiceMethod$Builder. build(ServiceMethod. java: 204)。改造服务
请找个人帮我修一下
使用以下代码:
接口:
@Multipart
@POST("/ws_services.php?action=imageupload")
public void imageupload(@Part("image") TypedFile file, Callback<Example> callback);
活动Java语言
TypedFile typedFile = new TypedFile("image/*", new File(file.getAbsolutePath()));
ApiHandler.getApiService().imageupload(typedFile, new Callback<Example>() {
@Override
public void success(Example example, Response response) {
try {
String status = example.getSuccess();
if (status.equals("1"))
{
Toast.makeText(getApplication(),example.getMessage(),Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getApplication(),example.getMessage(),Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
Log.e("status", "0");
}
}
@Override
public void failure(RetrofitError error) {
Log.e("retrofit error log", error.toString());
}
});
贴这个
@Multipart
@POST("AccountService/MultipartProfileImageUpload")Call<String>
updateProfilePic(@Body UserIdCredentials
userIdCredentials,@Part MultipartBody.Part file);
到这个
@Multipart
@POST("AccountService/MultipartProfileImageUpload")Call<String>
updateProfilePic(@part("params") UserIdCredentials
userIdCredentials,@Part MultipartBody.Part file);
并在服务器端将请求正文作为参数获取
根据这个答案,我做了这样的修改,效果很好。
请求
RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), file);
MultipartBody.Part fileToUpload = MultipartBody.Part.createFormData("image", file.getName(), requestBody);
MultipartBody.Part id = MultipartBody.Part.createFormData("userId", userId);
//Creating a rest adapter
ApiInterface apiService =
ApiClient.getClient().create(ApiInterface.class);
Call<ProfilePicUpdateResponse> call = apiService.updateProfilePic(id,fileToUpload);
call.enqueue(new Callback<ProfilePicUpdateResponse>() {
@Override
public void onResponse(Call<ProfilePicUpdateResponse> call, Response<ProfilePicUpdateResponse> response) {
loading.dismiss();
if (response.isSuccessful()) {
Log.e("Success", new Gson().toJson(response.body()));
}
else
{
loading.dismiss();
csActivity.showMsg(getResources().getString(R.string.something_error));
}
}
@Override
public void onFailure(Call<ProfilePicUpdateResponse> call, Throwable t) {
loading.dismiss();
Log.d("=========>>", t.getMessage().toString());
Log.d("============>>>", "Failure");
}
});
接口类
@Multipart
@POST("AccountService/MultipartProfileImageUpload")
Call<ProfilePicUpdateResponse> updateProfilePic(@Part MultipartBody.Part userId, @Part MultipartBody.Part file);
在我正在开发的React web应用程序中,有一个包含一些用户数据的文件上传部分。然而,当我试图上传文件时,服务器抛出以下错误。 组织。阿帕奇。公猫util。http。文件上传。FileUploadException:请求被拒绝,因为找不到多部分边界 反应侧 我的Spring Boot控制器如下所示。
我使用Jhipster,这是一个控制器方法: 控制器: 本质上,我想发布一个文件和一个json对象。 请求负载的外观如下: 这是Spring Boot日志消息: 已解决的由处理程序执行引起的异常:org.springframework.web.multipart.support.MissingServletRequestPartException:所需的请求部分“file”不存在 将content
这个问题以前可能有人问过,但没有,没有得到明确的回答。具体如何将原始的整个JSON发布到一个修改请求的主体中? 在这里见类似的问题。或者这个答案是正确的,它必须是表单url编码并作为字段传递?我真的希望不是这样,因为我连接到的服务只是希望文章正文中有原始的JSON。它们并不是为了寻找JSON数据的特定字段而设置的。 我只想和restperts一劳永逸地澄清这一点。一人回答不用改装。另一个不确定句法
我有一个REST api,它接受嵌套json的数据,包括多部分文件 在通过postman测试REST api时,我遇到了问题。 我不知道如何发送我需要的各种类型的数据——多部分/表单数据文件和嵌套的json。 我在其他项目中分别使用了REST,但我无法将它们合并到一个请求中。 要使用多部分/表单数据,我必须在正文中选择表单数据,然后从键字段的下拉列表中选择文件,单击值字段上的选择文件按钮,然后选择
我试图复制下面的POST请求使用Python中的请求模块: 请求文档建议使用files参数。 当我尝试以下呼叫: 我得到以下HTTP请求: 我还尝试使用数据参数: 导致以下HTTP请求: 我遇到的问题是,使用files参数会导致服务器无法识别调用,可能是由于HTTP请求中发送了意外的“filename”信息。使用数据参数发送错误的内容类型标题。 已知第一个请求正在我希望将请求发送到的服务器上工作-
我最近开始在我的android应用程序中使用改装,这是我添加用户的改装请求: 这里User是我想在服务器上注册的用户的模型类。问题是服务器需要Base64.encode()格式的json正文请求。有没有办法使用改装发送Base64编码数据? 我可以想到手动这样做: 然后在请求中传递这个。但是,我必须手动完成这项工作,并处理每个POST请求。有没有更干净的方法。