java - 500, Retrofit 2 中的内部服务器错误

标签 java android server http-post retrofit2

每次我尝试通过 Retrofit 发送 POST 请求时,都会出现 500 内部服务器错误。当我发送 GET 请求时,它发送正确。我确信服务器端一切正常。我的代码有什么问题?

这是我的请求方式

@POST("/listing/createListing")
Call<ResponseBody> pushData(@Body RequestBody image);

实现后 modelTask​​ 是我的模型类对象,firebaseToken 是 firebase 身份验证 token 。在我的模型类中,我将图像保存为文件列表。

OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new 
Interceptor() {
        @Override
        public okhttp3.Response intercept(Chain chain) throws 
IOException {
            Request newRequest  = chain.request().newBuilder()
                    .addHeader("Authorization", "Bearer " + 
firebaseToken)
                    .build();
            return chain.proceed(newRequest);
        }
    }).build();
    Retrofit retrofit = new Retrofit.Builder()
            .client(client)
            .baseUrl("https://something.herokuapp.com")
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    ApiEndPoint apiService = retrofit.create(ApiEndPoint.class);


    MultipartBody.Builder builder = new MultipartBody.Builder();
    builder.setType(MultipartBody.FORM);


    builder.addFormDataPart("title", modelTask.getTitle());
    builder.addFormDataPart("description", modelTask.getDescription());
    builder.addFormDataPart("user_name", "Josim Uddin");
    builder.addFormDataPart("user_id", "2133323");
    builder.addFormDataPart("price", "30.0");
    builder.addFormDataPart("category_name", "Cleaning");
    builder.addFormDataPart("category_id", "123");
    builder.addFormDataPart("preferred_date", 
modelTask.getPreferred_date());
    builder.addFormDataPart("preferred_time", 
modelTask.getPreferred_time());
    builder.addFormDataPart("hasPet", modelTask.getHasPet());
    builder.addFormDataPart("budget", 
String.valueOf(modelTask.getBudget()));
    builder.addFormDataPart("address", modelTask.getAddress());
    builder.addFormDataPart("longitude", 
String.valueOf(modelTask.getLongitude()));
    builder.addFormDataPart("latitude", 
String.valueOf(modelTask.getLatitude()));
    builder.addFormDataPart("equipment", modelTask.getEquipment());

    for (int i = 0; i < modelTask.getImages().size(); i++) {
        builder.addFormDataPart("image[]", 
modelTask.getImages().get(i).getName(), 
RequestBody.create(MediaType.parse("multipart/form-data"), 
modelTask.getImages().get(i)));
    }


    MultipartBody requestBody = builder.build();
    Call<ResponseBody> call = apiService.pushData(requestBody);
    call.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, 
Response<ResponseBody> response) {
            Log.d(TAG, "onResponse:" + response.code()+", 
"+response.message());

            if (response.isSuccessful()) {
                try {
                    Log.d(TAG, "post submitted code:" + 
response.code()+"body:"+response.body().string());
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
            Log.e(TAG, "Unable to submit post to API:: 
"+t.getMessage());
        }
    });

Postman 测试成功

最佳答案

试试这个

@POST("listing/createListing")
Call<ResponseBody> pushData(@Body RequestBody image);

从链接中删除“/”并将其添加到 Base Url 的末尾。

关于java - 500, Retrofit 2 中的内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51840703/

相关文章:

java - 如何为 HK2 中的服务创建代理

java - Mongo Java 驱动程序 ObjectId.getCounter() 已弃用

android - Flutter:如何使用 fcm 以编程方式发送推送通知

jquery - 强制我的页面为 http 而不是 https?

c - 如何通过C中的套接字号获取客户端IP

java - 我有一个打开 GUI 的按钮,如何设置 GUI 在屏幕上显示的位置?

java - 比较 n 个对象的多个字段的共同值

android - 是否有 Android Material Design 的默认高度集合?

android - 在不同 fragment 之间导航时,BottomSheet 不会隐藏

python - (Python) 如何在不刷新的情况下实时接收消息?