我正在尝试连接到java中的URL。但是我得到了下面的异常。我曾尝试使用URLEncoder对utf-8格式的网址进行编码,但在尝试连接到以下网址时仍出现以下异常:
URL:
String url = "http://bbb.org/classify/id?itemId=15652722&event=ITEM.RECLASSIFY&classifierName=ListingClassifier&appId=ListingClassifier&payload={\"source\":\"test\"}";
例外:
Caused by: java.net.URISyntaxException: Illegal character in query at index 148: http://bbb.org/classify/id?itemId=15652722&event=ITEM.RECLASSIFY&classifierName=ListingClassifier&appId=ListingClassifier&payload={"source":"test"}
at java.net.URI$Parser.fail(URI.java:2848)
at java.net.URI$Parser.checkChars(URI.java:3021)
at java.net.URI$Parser.parseHierarchical(URI.java:3111)
at java.net.URI$Parser.parse(URI.java:3053)
at java.net.URI.<init>(URI.java:588)
at java.net.URI.create(URI.java:850)
基本上,异常发生在"{“。请建议URL有什么问题。
尝试进行如下编码:
String url = "http://bbb.org/classify/id?itemId=15652722&event=ITEM.RECLASSIFY&classifierName=ListingClassifier&appId=ListingClassifier&payload={\"source\":\"test\"}";
url = URLEncoder.encode(url, "UTF-8");
但是编码并没有解决这个问题。
发布于 2018-06-03 02:59:57
您需要对URI
进行编码,以将非法字符(如果有)替换为合法的编码字符。如下所示:
String url = "http://bbb.org/classify/id?itemId=15652722&event=ITEM.RECLASSIFY&classifierName=ListingClassifier&appId=ListingClassifier&payload={\"source\":\"test\"}";
url = URLEncoder.encode(url, "UTF-8");
来自URLEncoder类文档:
public static String encode(String s, String enc)
使用特定的编码方案将字符串转换为application/x-www-form-urlencoded格式。此方法使用提供的编码方案获取不安全字符.的字节
https://stackoverflow.com/questions/50660117
复制相似问题