Android中GET请求冒号:的URL编码正确方式问询
解决Plex直播电视目录GET请求中的URL编码问题
我刚接触Java调用Plex API时,也碰到过几乎一模一样的坑!让我来帮你捋清楚问题出在哪,以及怎么解决。
你遇到的核心矛盾其实不是冒号的编码方式不对——%3A确实是冒号:的标准URL编码,但Plex的API在处理路径里的特定标识符时,有自己的规则。
关键结论:冒号不需要编码!
你的完整请求URL应该是:http://192.168.1.50:32400/tv.plex.providers.epg.onconnect:23/sections
这里的冒号是Plex直播源标识符的一部分,属于合法的路径组成字符,直接保留就行。你之前直接用冒号触发「Malformed URL」错误,大概率是Java代码里手动拼接URL的写法有问题,不是冒号本身的锅。
Java中正确构造URL的姿势
别手动拼字符串构造URL,建议用java.net.URI类来构建,它会自动处理真正需要转义的字符,同时保留Plex标识符的结构:
import java.net.URI; import java.net.URL; public class PlexLiveApiTest { public static void main(String[] args) throws Exception { String baseUrl = "http://192.168.1.50:32400"; String liveSectionPath = "tv.plex.providers.epg.onconnect:23/sections"; // 用URI类处理路径拼接,自动处理合法字符 URI plexUri = new URI(baseUrl + "/" + liveSectionPath); URL requestUrl = plexUri.toURL(); // 接下来就可以用这个requestUrl发起GET请求了 } }
为什么编码后返回空库?
当你把冒号转成%3A后,Plex API会把tv.plex.providers.epg.onconnect%3A23当成一个完整的provider名称,而不是tv.plex.providers.epg.onconnect加上端口23,自然找不到对应的直播电视库,所以返回空结果。
内容的提问来源于stack exchange,提问作者Matthew Gorski
相关产品推荐
相关产品推荐

