URISyntax Исключение после кодирования URL - PullRequest
0 голосов
/ 02 июня 2018

Я пытаюсь подключиться к URL в Java.Но я получаю следующее исключение.Я пытался использовать URLEncoder для кодирования URL в utf-8, но все еще получаю следующее исключение при попытке подключиться к следующему URL:

URL:

String url = "http://bbb.org/classify/id?itemId=15652722&event=ITEM.RECLASSIFY&classifierName=ListingClassifier&appId=ListingClassifier&payload={\"source\":\"test\"}";

Exception:

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"); 

Но кодировка не решила проблему.

1 Ответ

0 голосов
/ 02 июня 2018

Вам необходимо закодировать 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"); 

From URLEncoder Документация класса:

public static String encode(String s, String enc)

Переводит строку в формат application / x-www-form-urlencoded с использованием специальной схемы кодирования.Этот метод использует предоставленную схему кодирования для получения байтов для небезопасных символов .

...