Сімвал @ у паролі да Java-проксі
Перадайце сыры пароль у PasswordAuthentication і ўжывайце URL-кадаванне толькі пры стварэнні рэальнага URL проксі.
java.net.PasswordAuthentication атрымлівае імя карыстальніка і масіў сімвалаў пароля. Перадайце арыгінальныя сімвалы пароля:
var credential = new java.net.PasswordAuthentication(
"proxy-user", "p@ssword".toCharArray());
Гэта ілюстратыўны пароль. У кодзе праграмы бярыце сапраўдныя сімвалы з патрэбнай крыніцы ўліковых даных.
Сімвал @ унутры гэтага пароля — даныя, бо пароль ужо мае свой аргумент. Пераўтварэнне яго ў p%40ssword перад канструктарам перадае іншы пароль.
URL проксі мае іншае прадстаўленне ўліковых даных. У такім URL, як http://proxy-user:p%[email protected]:8080, кадаваны @ знаходзіцца ўнутры звестак пра карыстальніка, а наступны @ аддзяляе гэтыя звесткі ад хоста. Дэкадуйце і кадуйце ў адпаведнасці з інтэрфейсам, які фактычна спажывае значэнне.
Цытаванне ў shell, экранаванне радковых літаралаў Java і працэнтнае кадаванне URL таксама вырашаюць розныя праблемы разбору. Вызначце, які ўзровень чытае ўвод, замест таго каб паўтараць кадаванне ўліковых даных, пакуль не зменіцца паводзіны запыту.