Retrofit发起注册POST请求提示无匹配HTTP资源该如何解决?
问题排查解决步骤
你遇到的404报错核心原因是请求路径和后端实际暴露的接口路径不匹配,按以下优先级排查:
- 第一,核对Retrofit的BaseURL与接口路径拼接是否正确
你Postman调用的完整有效接口路径为:http://202.69.38.84/UIGAttendance/API/UIGAttendance/UserRegistration,拆分后路径段为UIGAttendance/API/UIGAttendance/UserRegistration,而你当前@POST注解中仅填写了UIGAttendance/UserRegistration,缺失了前缀路径段:如果你配置的Retrofit BaseURL为
http://202.69.38.84/,需要将@POST的参数修改为完整路径:@POST("UIGAttendance/API/UIGAttendance/UserRegistration") @FormUrlEncoded Call<RegistrationListApi> signUp(@Field("CNIC") String CNIC ,@Field("FullName") String FullName, @Field("address") String address, @Field("Email") String Email, @Field("Mobile") String Mobile, @Field("Username") String Username, @Field("Password") String Password, @Field("HostName") String HostName);如果你配置的Retrofit BaseURL为
http://202.69.38.84/UIGAttendance/API/,则当前@POST的参数不需要修改,确认BaseURL拼写正确即可。 - 第二,核对请求方式与参数传递规则
你当前Postman测试时将参数放在URL的query参数中,属于GET请求的传参方式,而你定义的是POST+表单传参:- 确认后端接口要求的请求方式为POST,参数需放在x-www-form-urlencoded请求体中
- Postman测试时切换到POST请求,将参数从
Params栏移到Body栏的x-www-form-urlencoded分类下,避免用query传参
- 第三,核对路径大小写与拼写
部分服务端框架对路径大小写敏感,逐段核对路径拼写、大小写是否和后端提供的接口文档完全一致,不要漏写/多写斜杠 - 第四,核对服务端可用性
若以上配置都正确仍报错,确认当前网络能正常访问服务端地址,没有被防火墙拦截,且后端接口正常部署上线没有下线
内容的提问来源于stack exchange,提问作者Hadi
相关产品推荐
相关产品推荐

