【问题标题】:Retrofit2.0 is returning 404 not foundRetrofit2.0 返回 404 not found
【发布时间】:2016-03-16 08:11:25
【问题描述】:
 Retrofit retrofit = new Retrofit.Builder()

            .baseUrl("http://ipAdress/SaveImg/DouBanGirl")
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    imgApi imgService = retrofit.create(imgApi.class);
    Call<Img> imgCall = imgService.getImg("20151119");

    imgCall.enqueue(new Callback<Img>() {
        @Override
        public void onResponse(retrofit.Response<Img> response, Retrofit retrofit) {
            Log.d(TAG, response.code() + " ");
        }

        @Override
        public void onFailure(Throwable t) {
            Log.d(TAG, t.getMessage());

        }
    });

}

public interface imgApi {
    @GET("/DouBanGirl")
    Call<Img> getImg(@Query("date") String date);
}

当我尝试这个时,它显示 404 not found。网址是正确的,我检查了。 不知道怎么回事。

【问题讨论】:

  • 你是否在基本 url 中包含了端口?
  • 如果您收到 404,则该 URL 在服务器上不存在。您要连接到哪个 URL?
  • 你在基本 url 和 GET 路径中都有 DouBanGirl。我怀疑它是否正确 :) 使用 baseUrl("ipAdress/SaveImg/DouBanGirl") 和 GET("/") 或 baseUrl("ipAdress/SaveImg") 和 @GET("/DouBanGirl")

标签: android retrofit


【解决方案1】:

由于 Retrofit 2.0 如何使用 Http Resolve 来解析端点的 uri 方案,如果您将 baseurl 指定为 http://hello.com 并将端点 URL 指定为 /world/foo,它将中断。

您需要使用基本 URL http://hello.com/ 和端点 URL world/foo

/ 与众不同。

【讨论】:

  • 我已将其编辑为 baseUrl http://ipAdress/SaveImg/DouBanGirl/ @GET("DouBanGirl"),但它不起作用,又是 404
  • @HugoXie 将基本 URL 保留为 .baseUrl("http://ipAdress/"),将接口路径保留为 @GET("DouBanGirl")
【解决方案2】:

这个问题是不久前提出的,但我回答这个问题以防万一将来有人到达这里。 Retrofit 无法像 Web 浏览器或 Postman 那样识别 200 状态码。它只检测200,如果你只发送它与一个空的json,否则它就像服务器给它404状态码一样。 例如,在 Express js 中,代码 res.sendStatus(200); 不会让 Retrofit 认为任务已完成,您应该使用 res.status(200).send({}); 之类的代码

【讨论】:

    猜你喜欢
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 2017-06-08
    • 2020-01-28
    • 2015-01-07
    相关资源
    最近更新 更多