我想将本地图库图像发送到api。我已将图像添加为多部分类型文件,并且iam也在同一个api中发送一些字符串数据作为多部分类型字符串。
所以当我点击api时我得到了这个回复。
@Body参数不能与表单或多部分编码一起使用。 (参数#1)
我的代码:
//Add the values into Multipart.
MultipartTypedOutput multipartTypedOutput = new MultipartTypedOutput();
//Add the ACCESS_TOKEN
//MULTIPLEIMAGE
multipartTypedOutput.addPart(Constants.LOGO_IMAGE, new TypedFile("image/*", new File("" + encodedByte)));
//Add the ACCESS_TOKEN
multipartTypedOutput.addPart(Constants.COMPANY_NAME, new TypedString(companyName));
multipartTypedOutput.addPart(Constants.TAGS, new TypedString(projectTags));
multipartTypedOutput.addPart(Constants.PROJECT_DESC, new TypedString(projectDesc));
multipartTypedOutput.addPart(Constants.CATEGORY, new TypedString(categories));
multipartTypedOutput.addPart(Constants.STYLE, new TypedString(launchStyle));
multipartTypedOutput.addPart(Constants.COLOR_CODE, new TypedString(colorCode));
multipartTypedOutput.addPart(Constants.CONTEST_PACK, new TypedString(contestPackage));
multipartTypedOutput.addPart(Constants.PAYMENT_GATE, new TypedString(paymentGateway));
multipartTypedOutput.addPart(Constants.USERID, new TypedString(userId));
if (connectionDetector.isOnline()) {
apiManager.getApiService().launchApi(multipartTypedOutput, new LaunchCallback(LaunchStep4Fragment.this));
} else {
Toast.makeText(getActivity(), getString(R.string.check_internet), Toast.LENGTH_SHORT).show();
}
接口方法
/**
* @param multipartTypedOutput
* @param callback
*/
@FormUrlEncoded
@POST(Constants.STORE_CONTEST)
void launchApi(@Body MultipartTypedOutput multipartTypedOutput , Callback<LaunchResponse> callback);
在api方面,他们将一切都变成了一个字符串。那么它是否取决于参数类型或代码问题?
我应该改变什么来获得结果?
如果我做错了,请有人解释一下。
答案 0 :(得分:1)
使用Retrofit 2
@Headers({
"Accept: application/json",
})
@Multipart
@POST("upload")
Call<ResponseBody> uploadImage(@Part("picture\"; filename=\"picture") RequestBody picture, @Part("company_name") RequestBody company_name);
答案 1 :(得分:0)