【发布时间】:2020-04-30 19:20:13
【问题描述】:
我无法使用改造获得响应,但它给出了成功响应:
Response{protocol=http/1.1, code=201, message=Created, url=http://test.some_url.in/api/upload/user/PostUserImage/}
并且图像已成功上传到服务器,但是 响应正文中或使用 Gson 均未显示任何内容:
我正在使用以下代码:
private void uploadImage(byte[] imageBytes) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
RetrofitInterface retrofitInterface = retrofit.create(RetrofitInterface.class);
RequestBody requestFile = RequestBody.create(MediaType.parse("image/jpeg"), imageBytes);
MultipartBody.Part body = MultipartBody.Part.createFormData("image", "unnamed.jpg", requestFile);
Call<Response> call = retrofitInterface.uploadImage(body);
mProgressBar.setVisibility(View.VISIBLE);
call.enqueue(new Callback<Response>() {
@Override
public void onResponse(Call<Response> call, retrofit2.Response<Response> response) {
mProgressBar.setVisibility(View.GONE);
Log.v("keys","-----response---------"+response);
if (response.isSuccessful()) {
Response responseBody = response.body();
mBtImageShow.setVisibility(View.VISIBLE);
assert responseBody != null;
} else {
ResponseBody errorBody = response.errorBody();
Gson gson = new Gson();
assert errorBody != null;
Response errorResponse = gson.fromJson(errorBody.toString(), Response.class);
}
}
@Override
public void onFailure(Call<Response> call, Throwable t) {
mProgressBar.setVisibility(View.GONE);
Log.d(TAG, "onFailure: "+t.getLocalizedMessage());
}
});
}
请告诉我如何获得服务器响应.....
【问题讨论】:
-
你的api返回响应了吗?
-
是的,当我在 ARC 客户端执行操作时,它会返回,它会在 JSON 数组中返回 [图像上传成功],但是当使用改造代码时,图像会被上传,但响应只有 Response{protocol=http /1.1,代码=201,消息=创建,url=test.some_url.in/api/upload/user/PostUserImage}
-
HTTP 201 Created 成功状态响应码表示请求已成功并导致创建资源,所以将 201 作为成功响应。 - restfulapi.net/http-status-201-created
-
将您的回复更新为
public void onResponse(Call<Response> call, retrofit2.Response<Response> response)到public void onResponse(Call<ResponseBody> call, retrofit2.Response<ResponseBody> response)以及相关区域 -
更改您的回复类型,如上评论。响应响应体
标签: android web-services gson retrofit retrofit2