当前位置: 首页 > 知识库问答 >
问题:

改装2从基本url中删除主机名后的字符

段干恺
2023-03-14

我正在使用改装来访问RESTful api。基本url为:

http://api.example.com/service

这是接口的代码:

public interface ExampleService {
    @Headers("Accept: Application/JSON")
    @POST("/album/featured-albums")
    Call<List<Album>> listFeaturedAlbums();
}

这就是我发送请求和接收响应的方式:

new AsyncTask<Void, Void, Response<List<Album>>>() {

        @Override
        protected Response<List<Album>> doInBackground(Void... params) {
            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl("http://api.example.com/service")
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();

            ExampleService service = retrofit.create(ExampleService.class);

            try {
                return service.listFeaturedAlbums().execute();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Response<List<Album>> listCall) {
            Log.v("Example", listCall.raw().toString());
        }
    }.execute();

我得到的日志很奇怪:

V/示例﹕ 响应{协议=http/1.1,代码=404,消息=未找到,url=http://api.example.com/album/featured-albums}

这是怎么回事?

共有1个答案

尤飞尘
2023-03-14

改装2使用与<代码>

相对URL上的前导/告诉Retrofit它是主机上的绝对路径。这是我给出的演示文稿中的一个示例,显示了这一点:

请注意底部解析的错误URL。

通过删除前导/,URL将变为相对的,并将与作为基本URL一部分的路径段相结合。在演示文稿中更正,最终URL现在是正确的:

在您的示例中,您在基本URL上没有尾随的/。您可能希望添加一个,以便在它之上解析相对路径,而不是作为它的兄弟姐妹。

 类似资料:
  • 我有一个Apihttps://hello.example.com:344/new/search/result.使用改装2实现相同功能: 这就是如何初始化改装: 这是接口请求: 但当我点击api时:它会从中删除端口并点击 "https://hello.example.com/new/search/result" 出了什么问题?

  • 问题内容: 我在从Codeigniter的URL中删除index.php时遇到问题。我使用Codeigniter 1.7制作了一些网站,而我使用的.htaccess代码在2版中不起作用。 我尝试使用 和 我也尝试了没有RewriteBase / in的情况。 我已经将$ config [‘uri_protocol’]更改为REQUEST_URI和QUERY_STRING,什么也没有。 我已经设置了

  • 问题内容: 在我的Django应用中,我需要从引荐来源网址中获取主机名及其协议,以便从类似以下网址的网址中获取: https://docs.google.com/spreadsheet/ccc?key=blah-blah-blah-blah#gid=1 https://stackoverflow.com/questions/1234567/blah-blah-blah-blah http://ww

  • 假设我的字符串是10个字符长。 如何删除最后一个字符? 如果我的字符串是(我不想替换字符,因为我的字符串可能包含多个字符),我只想删除最后一个字符。不管它是什么或者它发生了多少次,我都需要从我的字符串中移除最后一个字符。

  • 很好的一天! 你好 目前我在laravel工作,我是新来的。我一直在寻找我的问题的解决方案,但我找不到解决方案。我laravel的工作是访问已经没有 /public在网址我修复这个通过. htaccess,但它可以访问也与 /public在网址。请看下面的链接供您参考。 https://utok.ph/ https://utok.ph/public 我的htaccess文件 重写引擎在重写规则 ^

  • 本文档说明了如何使用基于域名的虚拟主机。 基于域名的虚拟主机和基于IP的虚拟主机比较 基于IP的虚拟主机使用连接的IP地址来决定相应的虚拟主机。这样,你就需要为每个虚拟主机分配一个独立的IP地址。而基于域名的虚拟主机是根据客户端提交的HTTP头中标识主机名的部分决定的。使用这种技术,很多虚拟主机可以共享同一个IP地址。 基于域名的虚拟主机相对比较简单,因为你只需要配置你的DNS服务器将每个主机名映