Simon... wrote:
> Hej,
>
> jeg skal åbne en side på et site der er htaccess beskyttet, normalt i en
> browser kan man bare skrive som sådan:
>
>
http://login:pass@side.dk
>
> men jeg har prøvet:
>
> url = new URL("
http://login:pass@side.dk");
> is = url.openStream();
>
> og så kommer den med en fejl der ser sådan her ud:
>
> java.io.IOException: Server returned HTTP response code: 401 for URL:
>
http://login:pass@side.dk
> at
>
sun.net.
www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection
> .java:709)
> at java.net.URL.openStream(URL.java:960)
> at HegreMain.main(HegreMain.java:268)
> Exception in thread "main"
>
>
> hvad gør man så ?
Jævnfør sektion 3.3 i RFC 1738[1] så er brugernavn og adgangskode ikke en
del af HTTP URL skemaet. Umiddelbart tror jeg derfor at du bliver nødt til
selv at udføre autentificeringsprotokollen.
Er der tale om Basic Authentication skemaet beskrevet i sektion 2 i RFC
2617[2] så kan man gøre noget i stil med nedenstående:
URL url = new URL("
http://side.dk/");
HttpURLConnection urlCon =
(HttpURLConnection) url.openConnection();
String userAndPassword =
new sun.misc.BASE64Encoder().encode("brugernavn:adgangskode".getBytes());
urlCon.setRequestProperty("Authorization",
"Basic "+userAndPassword);
urlCon.connect();
BufferedReader reader =
new BufferedReader(new InputStreamReader(urlCon.getInputStream()));
String ss = reader.readLine();
while (ss != null) {
System.out.println(ss);
ss = reader.readLine();
}
Er der tale om Digest Access Authentication skemaet beskrevet i sektion 3 i
RFC 2617[2] så er det lidt mere besværligt. Du vil få brug for
java.security.MessageDigest til at lave en MD5 checksum.
Du finder ud af hvilket skema der er tale om ved at aflæse WWW-Authenticate
headeren som serveren returner i forbindelse med en fejl 401. Se sektion
1.2 i RFC 2617[2] for mere information vedrørende dette.
Apache 1.3 og 2.0 understøtter kun Basic Authentication og Digest Access
Authentication så der er ikke andre skemaer du skal tage højde for[3][4].
[1] RFC 1738: Uniform Resource Locators (URL)
http://www.w3.org/Addressing/rfc1738.txt
[2] RFC 2617: HTTP Authentication: Basic and Digest Access Authentication
http://www.ietf.org/rfc/rfc2617.txt
[3] Apache HTTP Server Version 1.3: Apache Core Features
http://httpd.apache.org/docs/mod/core.html#authtype
[4] Apache HTTP Server Version 2.0: Apache Core Features
http://httpd.apache.org/docs-2.0/mod/core.html#authtype
--
Jonas Kongslund <jonas(at)kongslund.dk>
http://www.kongslund.dk/
The programmer, like the poet, works only slightly removed from pure
thought-stuff. He builds his castles in the air, from air, creating by
exertion of the imagination. [Brooks, The Mythical Man-Month]