HttpClient, как отправить недопустимые символы в строке URI - PullRequest
1 голос
/ 29 марта 2012

Я хотел бы предложить несколько автоматических тестов для проверки того, что мои серверы обрабатывают недействительные URI запроса. Например, тестер смог отправить это как свой URL, используя curl для windows:

http://127.0.0.1/C:\an\incorrect\path\file.txt

У меня есть обработка на сервере, чтобы справиться с этим, но я все еще хочу добавить тесты, если это возможно. Попытка сделать это с HttpClient, но HttpClient не любит недопустимые символы;)

// Run client
                String Url = targetHost + filePath + fileName;
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(Url);

                // run test
                InputStreamEntity reqEntity = new InputStreamEntity(new FileInputStream(sourceDir.getAbsolutePath() + LusConstants.DIR_SEPERATOR + fileName),-1);
                reqEntity.setContentType("binary/octet-stream");
                reqEntity.setChunked(chunked);
                httppost.setEntity(reqEntity);
                httpclient.execute(httppost);

Исключение из HttpClient:

aused by: java.net.URISyntaxException: Illegal character in path at index 39: http://127.0.0.1:8080//a/deeper/path/an\incorrect\path\file.txt
    at java.net.URI$Parser.fail(Unknown Source)
    at java.net.URI$Parser.checkChars(Unknown Source)
    at java.net.URI$Parser.parseHierarchical(Unknown Source)
    at java.net.URI$Parser.parse(Unknown Source)
    at java.net.URI.<init>(Unknown Source)
    ... 4 more

Есть мысли?

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

\ я убегаю.Результатом является вкладка.

URL может содержать только печатаемый код US-ASCII.Для других кодов существует нотация%

, для обратной косой черты

% 5c = "\"

0 голосов
/ 29 марта 2012

Может быть, вы можете написать свой собственный необработанный http-клиент, чтобы на стороне клиента не было проверки URL. Проверьте это:

http://code.joejag.com/2012/how-to-send-a-raw-http-request-via-java/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...