/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
java.net.MalformedURLException: no protoco~
Fra : Thomas Pedersen


Dato : 23-11-03 12:10

Hejsa,

Jeg forsøger at åbne en connection til
"http://fastcounter.linkexchange.com/fastcounter?1634283+3268573" og vil
læse responset via en InputStream, men får en
"java.net.MalformedURLException: no protocol:
digits?COUNT=13890&STYLE=6&ACCOUNT=1634283" exception :(

--------------Jeg får følgende fejl start------------
java.net.MalformedURLException: no protocol:
/digits?COUNT=14439&STYLE=6&ACCOUNT=1634283
at java.net.URL.<init>(URL.java:579)
at java.net.URL.<init>(URL.java:476)
at java.net.URL.<init>(URL.java:425)
at
sun.net.www.protocol.http.HttpURLConnection.followRedirect(HttpURLConnection
..java:1081)
at
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection
..java:675)
at IMDB.openConnectionAndParseSource(IMDB.java:47)
at IMDB.main(IMDB.java:127)

--------------Jeg får følgende fejl slut------------

Jeg tror det har noget at gøre med at man på sin HttpURLConnection skal
sætte setFollowRedirect til false. Dvs. så redirecter den ikke. Herefter
skal man muligvis ændre i headeren, altså indsætte noget i protocol måske.
Derefter få den til at gå videre... MEN jeg er ikke helt med på hvordan jeg
lige får det til at spille.....og om det vil virke.....

Er der nogen som kan hjælpe mig - for jeg er helt lost!

Min kode er herunder ("source" er en klasse instans variable)...

På forhånd tak,
\Thomas

--------------Min kode ser sådan her ud start --------------
private void openConnectionAndParseSource(String counterUrl) {
URL url = null;
HttpURLConnection conn = null;
InputStream sourceStream = null;

try {
url = new URL(counterUrl);
conn = (HttpURLConnection) url.openConnection();
sourceStream = conn.getInputStream();
parseSource(sourceStream);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (sourceStream != null) {
try {
sourceStream.close();
} catch (IOException e) {
e.printStackTrace();
}
sourceStream = null;
}
if (conn != null) {
conn.disconnect();
conn = null;
}
url = null;
}
}

private void parseSource(InputStream sourceStream) {
this.source = new StringBuffer();
BufferedReader bin = new BufferedReader(new
InputStreamReader(sourceStream));
String line = null;
try {
while ( (line=bin.readLine()) != null) {
this.source.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
--------------Min kode ser sådan her ud start --------------




 
 
Jacob Bunk Nielsen (23-11-2003)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 23-11-03 12:53

"Thomas Pedersen" <ttp@post4.tele.dk> writes:

> private void openConnectionAndParseSource(String counterUrl) {

Hvordan ser counterUrl ud?

Den fejl du får kan tyde på at den ligner www.eksempel.dk/, og ikke
http://www.eksempel.dk/.

--
Jacob - www.bunk.cc
You never get a second chance to make a first impression.

Thomas Pedersen (23-11-2003)
Kommentar
Fra : Thomas Pedersen


Dato : 23-11-03 17:40

Sådan her:

String counterUrl =
"http://fastcounter.linkexchange.com/fastcounter?1634283+3268573";

\Thomas

"Jacob Bunk Nielsen" <spam@bunk.cc> wrote in message
news:spamdrop+m3ekvzb8u1.fsf@paven.bunk.cc...
> "Thomas Pedersen" <ttp@post4.tele.dk> writes:
>
> > private void openConnectionAndParseSource(String counterUrl) {
>
> Hvordan ser counterUrl ud?
>
> Den fejl du får kan tyde på at den ligner www.eksempel.dk/, og ikke
> http://www.eksempel.dk/.
>
> --
> Jacob - www.bunk.cc
> You never get a second chance to make a first impression.



Stig Tanggaard (23-11-2003)
Kommentar
Fra : Stig Tanggaard


Dato : 23-11-03 23:50

En url indeholder ikke parametre. Alt efter ? er parametre.

Istedet kan du gøre noget som det her:

URL url = new URL("http://fastcounter.linkexchange.com/fastcounter");

URLConnection connection = url.openConnection();

connection.setRequestProperty("1634283", "");

connection.setRequestProperty("3268573", "");

BufferedInputStream is =

new BufferedInputStream(connection.getInputStream());

} catch (MalformedURLException mue) {

System.err.println(mue.getMessage());

} catch (IOException ioe) {

System.err.println(ioe.getMessage());

}

Det burde vist virke. Alternativt kan du skrive til din outputstream.
Hvilket er noget i stil med:

connection.setDoOutput(true);
OutputStream out = connection.getOutputStream();

Hvorefter du skriver dine parametre en linie af gangen, vist nok i format
xxx=yyy.

Hvorefter du flusher din stream og derefter læser inputstream.

Den sidste har jeg brugt før (kan ikke lige finde koden, men den virker i
hvert fald).

Stig






Stig Tanggaard (24-11-2003)
Kommentar
Fra : Stig Tanggaard


Dato : 24-11-03 00:00

Øh

Det var vist en svipser... fik ikke lige læst det spørgsmål ordenligt.

Kan du ikke bare læse den redirecturl du får og så ændre den originale og
kalde den igen?



Thomas Pedersen (24-11-2003)
Kommentar
Fra : Thomas Pedersen


Dato : 24-11-03 20:23

Hej Stig,

> Kan du ikke bare læse den redirecturl du får og så ændre den originale og
> kalde den igen?

Joh det var planen at gøre det sådan på en eller anden måde... Men hvordan
gøres dette?




Stig Tanggaard (25-11-2003)
Kommentar
Fra : Stig Tanggaard


Dato : 25-11-03 18:29

Du kan sikkert selv finde ud af resten.


public static void main(String[] args) throws Exception {



HttpURLConnection.setFollowRedirects(false);


URL url = new
URL("http://fastcounter.linkexchange.com/fastcounter?1634283+3268573");

HttpURLConnection connection = (HttpURLConnection)url.openConnection();


InputStream in = connection.getInputStream();


//sådan får du returneret header

for(int i = 0; i < connection.getHeaderFields().size(); i++) {


System.out.print(connection.getHeaderFieldKey(i) + ": ");

System.out.println(connection.getHeaderField(i));


}



}



"Thomas Pedersen" <ttp@post4.tele.dk> skrev i en meddelelse
news:3fc25aaa$0$70003$edfadb0f@dread12.news.tele.dk...
> Hej Stig,
>
> > Kan du ikke bare læse den redirecturl du får og så ændre den originale
og
> > kalde den igen?
>
> Joh det var planen at gøre det sådan på en eller anden måde... Men hvordan
> gøres dette?
>
>
>



Thomas Pedersen (25-11-2003)
Kommentar
Fra : Thomas Pedersen


Dato : 25-11-03 20:09

Ja sådan får jeg header felterne...

Location headeren kan jeg få sådan her:
String location = conn.getHeaderField("Location");
Hvilket giver: "/digits?COUNT=14439&STYLE=6&ACCOUNT=1634283"

Det er mere hvordan får jeg rettet headeren (location tror jeg) - dvs. får
sat "http://fastcounter.linkexchange.com" ind foran i location headeren?? Og
så kørt videre derfra (openConnection eller connect med det nye sat??)

\Thomas

"Stig Tanggaard" <stigth_@stofanet.dk> wrote in message
news:3fc390a9$0$25795$ba624c82@nntp03.dk.telia.net...
> Du kan sikkert selv finde ud af resten.
>
>
> public static void main(String[] args) throws Exception {
>
>
>
> HttpURLConnection.setFollowRedirects(false);
>
>
> URL url = new
> URL("http://fastcounter.linkexchange.com/fastcounter?1634283+3268573");
>
> HttpURLConnection connection = (HttpURLConnection)url.openConnection();
>
>
> InputStream in = connection.getInputStream();
>
>
> //sådan får du returneret header
>
> for(int i = 0; i < connection.getHeaderFields().size(); i++) {
>
>
> System.out.print(connection.getHeaderFieldKey(i) + ": ");
>
> System.out.println(connection.getHeaderField(i));
>
>
> }
>
>
>
> }
>
>
>
> "Thomas Pedersen" <ttp@post4.tele.dk> skrev i en meddelelse
> news:3fc25aaa$0$70003$edfadb0f@dread12.news.tele.dk...
> > Hej Stig,
> >
> > > Kan du ikke bare læse den redirecturl du får og så ændre den originale
> og
> > > kalde den igen?
> >
> > Joh det var planen at gøre det sådan på en eller anden måde... Men
hvordan
> > gøres dette?
> >
> >
> >
>
>



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409083
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste