java. нужно ее средставами скачать с сайта zip-архив
http://....
Далее, смотрите методы у java.net.HttpURLConnection (HttpsURLConnection её наследник а именно: addRequestProperty, setDoInput, setDoOutput, getInputStream, getOutputStream, setRequestMethod.
Ну а также вам придется разобраться с протоколом HTTP и тем, как реализуется аутентификация (HTTP-auth, from-based) на том сервере, с которого производится скачивание. Еще может быть придется что-нибудь с cookie реализовывать (информация по cookies вроде в гугле была для Джавы).
Посмотрите java.net.URL по части метода openConnection он Вам вернет javax.net.ssl.HttpsURLConnection для URL вида Далее, смотрите методы у java.net.HttpURLConnection (HttpsURLConnection её наследник а именно: addRequestProperty, setDoInput, setDoOutput, getInputStream, getOutputStream, setRequestMethod.
Ну а также вам придется разобраться с протоколом HTTP и тем, как реализуется аутентификация (HTTP-auth, from-based) на том сервере, с которого производится скачивание. Еще может быть придется что-нибудь с cookie реализовывать (информация по cookies вроде в гугле была для Джавы).
мне еще посоветовали использовать HttpClient для этих целей.
Я так понимаю что это альтернатива для вашего решения с java.net.URL?
public static boolean sendMsgSSL(String URLName, String msg) {
boolean bret = false;
try {
URL url = new URL(URLName);
javax.net.ssl.HttpsURLConnection conssl = null;
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null,null,null);
HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory;
conssl = (HttpsURLConnection)url.openConnection;
conssl.setHostnameVerifier(new HostnameVerifier {
public boolean verify(String hostname, SSLSession session) {
return true;
}
}
);
conssl.setDoOutput(true);
conssl.setAllowUserInteraction(true);
conssl.setRequestProperty("Content-Type", XML_CONTENT_TYPE);
conssl.setUseCaches (false);
conssl.setRequestMethod("POST");
String encoded = new String(Base64.encode(new String("yourlogin:pass").getBytes;
conssl.setRequestProperty("Proxy-Authorization", "CONFIDENTIAL " + encoded);
OutputStream os = conssl.getOutputStream;
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bosw = new BufferedWriter(osw);
bosw.write(msg);
bosw.close;
//Certificate[] crf = conssl.getLocalCertificates;
//Certificate[] srf = conssl.getServerCertificates;
bret = (conssl.getResponseCode==HttpsURLConnection.HTTP_OK);
conssl.disconnect;
}
catch (Exception e) {
System.out.println( e.toString );
}
return bret;
}
это посылка сообщения по ssl с авторизацией, тебе надо чуть изменить, а именно :
- открыть входной поток для записи файла
- поменять тип авторизации , если нужно
- поменять Content-Type в параметрах запроса
и пробовать, пробовать....
![](/images/graemlins/wink.gif)
![](/images/graemlins/smile.gif)
String encoded = new String(Base64.encode(new String("yourlogin:pass").getBytes;
Можно немного проще
String encoded = new String(Base64.encode("yourlogin:pass".getBytes;
Кстати
catch (Exception e) {
System.out.println( e.toString );
}
Лучще писать как
catch (Exception e) {
e.printStackTrace;
}
Он выведет стек вызовов, и будет видно, где произошла ошибка. e.toString такой информации не даст.
А так - разбирайтесь. Удачи
![](/images/graemlins/wink.gif)
javax.net.ssl.SSLException: SSL V2.0 servers are not supported.
Когда я пытаюсь зайти на какой либо другой адрес, то такого не возникает
![](/images/graemlins/frown.gif)
This is correct — see the information at http://java.sun.com/products/jsse. Only SSL v3 is supported. You'll either need to upgrade the server or stick with MRJ 2.2.5, which goes through IE. That may or may not be better.
это прочитал, вот теперь интересно, неужели нет никакого выхода?
![](/images/graemlins/grin.gif)
SSLContext ctx = SSLContext.getInstance("TLS");
Варианты
SSLContext ctx = SSLContext.getInstance("SSLv3");
Ну и заменяя SSLv3 на различные варианты: т.е. на SSLv2 или просто SSL.
Также попробуйте без кода инициализации - т.е. без строчек
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null,null,null);
HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory;
conssl.setHostnameVerifier(new HostnameVerifier {
public boolean verify(String hostname, SSLSession session) {
return true;
}
}
);
(внимательнее, я там connssl.getConnection убрал).
У меня https соединение работало вообще без этого кода.
Предлагалось здесь: http://www.intellij.net/forums/thread.jspa?messageID=4997598
Кстати, по времени это позже, чем
This is correct — see the information at http://java.sun.com/products/jsse. Only SSL v3 is supported. You'll either need to upgrade the server or stick with MRJ 2.2.5, which goes through IE. That may or may not be better.(по адресу http://lists.apple.com/archives/java-dev/2002/Jan/msg00077.h...
Оставить комментарий
Alex1010
как это сделать, если на сайте необходима авторизация и используется SSL.(логин и пароль имеются)
Подскажите, плиз