Пользовательский протокол не работает в Apache Commons Protol - PullRequest
0 голосов
/ 08 мая 2019

Добрый день,

Я следую этой статье, чтобы создать собственный протокол и сделать https сообщение.

https://hc.apache.org/httpclient-3.x/sslguide.html

На шаге 2 я используюследующий код:

httpclient.getHostConfiguration().setHost("www.whatever.com", 443, myhttps);

Однако, когда я выполняю метод httppost, я все еще нажимаю 403 запрещено.Я думал, что это сработает.

Таким образом, я перехожу к шагу 3 и пишу следующий код:

Protocol.registerProtocol("https", 
new Protocol("https", new MySSLSocketFactory(), 443));

Его работа, и я получаю код ответа 200.То, что нам нужно зарегистрировать только протокол, может заставить HttpPost загрузить MySSLSocketFactory, который содержит сертификат сервера.Одного httpclient.getHostConfiguration().setHost() недостаточно для httpPost, чтобы загрузить MySSLSocketFactory.Пожалуйста, исправьте меня, если я ошибаюсь.

Однако на шаге 3 упоминается, что мы можем зарегистрировать пользовательский протокол для определенного обозначения протокола.Итак, я иду для этого:

Protocol.registerProtocol("myhttps", 
new Protocol("https", new MySSLSocketFactory(), 443));

И изменить мой httpPost URL-адрес на myhttps:

HttpClient httpclient = new HttpClient ();PostMethod httppost = new PostMethod ("my https://www.whatever.com/");

Тем не менее, я все еще получаю 403 запрещено. Если я зарегистрирую и https, и:

Protocol.registerProtocol("myhttps", 
    new Protocol("https", new MySSLSocketFactory(), 443));
Protocol.registerProtocol("https", 
    new Protocol("https", new MySSLSocketFactory(), 443));

Тогда это только работает.

Если я зарегистрируюсь только https и позвоню по номеру myhttps, я нажму java.lang.IllegalStateException: unsupported protocol: 'myhttps'.

Protocol.registerProtocol("https", 
        new Protocol("https", new MySSLSocketFactory(), 443));
PostMethod httppost = new PostMethod("myhttps://www.whatever.com/");

Я считаю, что допустила ошибку и стала причиной этой проблемы. Пожалуйста, сообщите об этом.

...