Ik heb op een webserver een PHP script dat data uitspuugd via de print() methode. Het script leest deze data op zijn beurt weer uit een socket verbinding met een JAVA applicatie op de server. Het script staat in een https omgeving.
Vanuit een JAVA applicatie wil ik de data die het script print, uitlezen. Hiervoor open ik een HttpsURLConnection op het adres van het PHP script. Tot zover werkt het allemaal: ik kan een verbinding maken op het script, dit kan ik controleren op de server.
Van deze connectie wil ik de InputStream gebruiken om de data uit te lezen. Het probleem treedt op als ik van deze stream het aantal bytes wil opvragen dat uitgelezen kan worden, met de methode available(). Deze geeft altijd 0 terug. Wanneer ik het PHP script in een 'gewone' http omgeving plaats werkt het echter wel.
Ik heb verschillende opties van de HttpsURLConnection geprobeerd, zonder resultaat. Ik heb ook al geprobeerd om de methode getContentLength() van de HttpsURLConnection te gebruiken, deze geeft altijd -1 terug.
De code:
Vanuit een JAVA applicatie wil ik de data die het script print, uitlezen. Hiervoor open ik een HttpsURLConnection op het adres van het PHP script. Tot zover werkt het allemaal: ik kan een verbinding maken op het script, dit kan ik controleren op de server.
Van deze connectie wil ik de InputStream gebruiken om de data uit te lezen. Het probleem treedt op als ik van deze stream het aantal bytes wil opvragen dat uitgelezen kan worden, met de methode available(). Deze geeft altijd 0 terug. Wanneer ik het PHP script in een 'gewone' http omgeving plaats werkt het echter wel.
Ik heb verschillende opties van de HttpsURLConnection geprobeerd, zonder resultaat. Ik heb ook al geprobeerd om de methode getContentLength() van de HttpsURLConnection te gebruiken, deze geeft altijd -1 terug.
De code:
Java:
1
2
3
4
5
6
7
| URL input_url = new URL("https://www.bla.com/bla.php"); HttpsURLConnection input = (HttpsURLConnection) input_url.openConnection(); input.setUseCaches(false); input.setAllowUserInteraction(true); input.setDoInput(true); DataInputStream input_stream = new DataInputStream(new BufferedInputStream(input.getInputStream())); |