【问题标题】:Android URL Encoding for colon %3A in GET commandGET 命令中冒号 %3A 的 Android URL 编码
【发布时间】:2018-04-26 23:02:45
【问题描述】:

我是 java 新手,我正在尝试使用 GET 命令进行一些 URL 编码来检索 plex livetv 目录。我遇到的问题是冒号“:”,如果我使用冒号,我会收到此错误,但如果我使用 URL 编码“tv.plex.providers.epg.onconnect%3A23”,我会收到一个空白的 livetv 库。

为“:”字符串定义 URL 编码的正确方法是什么?

网址格式错误。基础:http://192.168.1.50:32400/,相对:tv.plex.providers.epg.onconnect:23/sections

public interface PlexMediaContainerService {

    @GET("/")
    Call<MediaContainer> retrieveRoot();

    @GET("tv.plex.providers.epg.onconnect%3A23")
    Call<MediaContainer> retrieveLibrary();

    @GET("tv.plex.providers.epg.onconnect%3A23/sections")
    Call<MediaContainer> retrieveSections();

    @GET("tv.plex.providers.epg.onconnect%3A23/sections/{key}")
    Call<MediaContainer> retrieveSections(@Path("key") String key);

    @GET("tv.plex.providers.epg.onconnect%3A23/sections/{key}/{category}")
    Call<MediaContainer> retrieveSections(@Path("key") String key,
                                          @Path(value = "category", encoded = true) String category);

    @GET("tv.plex.providers.epg.onconnect%3A23/sections/{key}/{category}/{secondaryCategory}")
    Call<MediaContainer> retrieveSections(@Path("key") String key,
                                          @Path(value = "category", encoded = true)  String category,
                                          @Path(value = "secondaryCategory", encoded = true) String secondaryCategory);

    @GET("{urlPath}")
    Call<MediaContainer> retrieveItemByUrlPath(@Path(value = "urlPath", encoded = true) String key);


    @GET("tv.plex.providers.epg.onconnect%3A23/sections/{key}/search?type=1")
    Call<MediaContainer> movieSearch(@Path("key") String key,
                                    @Query("query") String query);

    @GET("tv.plex.providers.epg.onconnect%3A23/sections/{key}/search?type=2")
    Call<MediaContainer> tvShowsSearch(@Path("key") String key,
                              @Query("query") String query);

    @GET("tv.plex.providers.epg.onconnect%3A23/sections/{key}/search?type=4")
    Call<MediaContainer> episodeSearch(@Path("key") String key,
                                       @Query("query") String query);
}

【问题讨论】:

标签: java android retrofit plex


【解决方案1】:

问题是 okhttp 层中的 resolve 方法不知道如何合并到都以主机开头的 url。您可以在路径的开头添加/,以使 okhttp 了解它是路径而不是主机。您不需要自己编码:。例如,

@GET("/tv.plex.providers.epg.onconnect:23")
Call<MediaContainer> retrieveLibrary();

【讨论】:

  • 非常感谢拉格林!将 / 添加到路径的开头可解决此问题。现在数据正在正确解析。非常感谢您的时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
  • 2013-06-13
  • 2012-01-21
  • 2017-10-02
相关资源
最近更新 更多