Avatar billede kernelx Juniormester
30. januar 2008 - 11:54 Der er 5 kommentarer og
1 løsning

HTTP-POST-client

Hi,

Jeg har lavet en lille HTTP-POST-client, som åbner en Socket til en Sun Application server.

Det virker ellers meget fint. Der er bare et problem:
Følgende code bliver brugt til at få fat i response-data fra serveren.
+++
while( ( newLine=in.readLine() )!=null ) {
  response+=newLine+"\n";
  System.out.println( "*"+newLine );
}
in.close();
+++

Output:
---
*HTTP/1.1 200 OK
*X-Powered-By: Servlet/2.5
*Server: Sun Java System Application Server 9.1_01
*Content-Type: application/x-json;charset=utf-8
*Content-Length: 1117
*Date: Wed, 30 Jan 2008 10:39:18 GMT
*
*var=asdfghjklqasdfghjklqasdfghjklqasdfghjklq....
---
lige efter denne output ser det ud til, at den venter ca. 30 sekunder, til den får null i while-loop.
og først bagefter stopper programmet.

hvis jeg laver samme POST-request med et perl-script, får jeg den samme output og scriptet er med det samme færdig - uden at vente 30 sekunder.

hvordan kan jeg sørge for, at newLine=in.readLine() med det samme for null, hvis der ikke er flere data - uden at vente 30 sekunder?

med venlig hilsen
KernelX
Avatar billede kernelx Juniormester
30. januar 2008 - 11:57 #1
BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream() ) );
Avatar billede arne_v Ekspert
30. januar 2008 - 15:10 #2
Proev:

con.setRequestProperty("Connection", "close");
Avatar billede kernelx Juniormester
31. januar 2008 - 09:33 #3
hvorhenne skal jeg lave det?
Avatar billede arne_v Ekspert
31. januar 2008 - 15:08 #4
URL url = new URL(urlstr);
        HttpURLConnection con = (HttpURLConnection)url.openConnection();
        con.setRequestMethod("POST");
        con.setRequestProperty("Connection", "close"); // <---- her
        String info = "nam=val";
        con.setDoOutput(true);
        con.getOutputStream().write(info.getBytes());
        con.connect();
        if(con.getResponseCode() == HttpURLConnection.HTTP_OK) {
            InputStream is = con.getInputStream();
Avatar billede kernelx Juniormester
01. februar 2008 - 15:28 #5
Mange tak.
Husk at skrive et eller andet som svar.
Avatar billede arne_v Ekspert
01. februar 2008 - 15:39 #6
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester