Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Uitlezen http request in linux lukt niet! [java]

Deathlon
2 antwoorden
  • Hallo,

    ik heb een applicatie die direct van een socket een
    http request (GET) leest.

    De request heeft de onderstaande vorm, waarbij ik alleen
    geinteresseerd ben in de x variabele:
    http://mijnserver/give=x

    Als ik van de socket ga lezen op onderstaande wijze:

    [code:1:271b29e08c]
    final InputStream bis = socket.getInputStream();
    final int avail = is.available();

    System.out.println("available bytes "+avail);

    final byte[] bytes = new byte[avail];
    for (int i = 0; i < avail; i++)
    bytes[i] = (byte) bis.read();

    String str = new String(bytes);
    System.out.println("Get = "+str);
    [/code:1:271b29e08c]

    dan krijg ik wanneer ik de applicatie
    op Windows 2k draai, dan krijg ik het volledige HTML request te
    zien, waaruit ik vervolgens mijn GET variabele kan halen.

    Wanneer ik de applicatie op linux draai, dan lukt het niet,
    ik kan helemaal niets van de socket lezen!, de avail bytes
    variabele is 0!!
    Het zou toch helemaal niet uit mogen maken waarop ik mijn applicatie draai,
    de http request wordt toch gewoon altijd meeverzonden??

    Iemand enig idee, of een beter idee om http requests van een
    socket te lezen?

    alvast bedankt.
  • Het is misschien wel een idee om een System.out.println() neer te zetten als een client een socket aanmaakt. Als je deze println namelijk ziet weet je dat er wel connectie wordt gemaakt. Wat ik vermoed is dat er geen connectie wordt gemaakt omdat je firewall aan staat of een andere service al op deze poort draait. (als een andere service op deze poort draait krijg je als het goed is een BOUND exception).

    Als je die println niet te zien krijgt is je linux te streng ingericht, plaats dit bericht dan bij het OS Linux forum, die weten wel hoe ze dit moeten oplossen.

    Als je java applicatie werkt onder windows, werkt het ook onder Linux, heb ik zelf met een eigen geschreven webserver van mij geprobeerd.

    Hans

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.