使用Retrofit发起无subpath的POST请求报错的解决方法
问题解决方法
错误原因
Retrofit对baseUrl的格式有严格要求,必须以斜杠(/)结尾;同时接口的@POST注解不能用空字符串指定根路径,两者任意一项不符合要求都会触发URL解析错误,导致无法识别合法主机地址。
修正步骤
给baseUrl添加结尾斜杠
修改Retrofit构建代码中的baseUrl参数,确保其以/结尾,保证URL拼接逻辑正常运行。修正@POST的路径参数
将接口中的@POST("")改为@POST("/"),明确指定请求的根路径。
修正后的完整代码
接口定义部分
@Multipart @POST("/") fun updateProfile( @Part("tile_mode") fullName: Int, @Part("raw_image") image: RequestBody ): Call<Result>
Retrofit实例构建部分
val retrofit = Retrofit.Builder() .baseUrl("https://blog.banned.top:2054/") .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build() val request = retrofit.create(GetRequestInterface::class.java) val call: Call<Result> = request.updateProfile(some parameter)
补充说明
后续如果需要请求带子路径的接口,只要保持baseUrl以/结尾的格式,直接在@POST注解中写子路径即可(比如@POST("/api/update")),Retrofit会自动完成正确的URL拼接。
内容的提问来源于stack exchange,提问作者banned
相关产品推荐
相关产品推荐

