GetInputStream() avec socket java

Résolu/Fermé
Jim - 5 juin 2012 à 11:09
 Jim - 5 juin 2012 à 13:31
Bonjour,


Je dois récupérer la valeur donnée par cette URL : http://160.98.70.80/cgi-bin/readVal.exe?PDP,,R2242,d

Pour ce faire, j'utilise getInputStream() avec une socket java qui contient l'url.
Le soucis est que la socket n'est faite que pour contenir l'host (160.98.70.80 ici donc).

J'aimerais donc savoir comment passer le reste de l'URL pour que mon getInputStream() pointe la valeur qu'elle retourne, plutôt que de seulement pointer l'host.

J'ai bien sûr essayer de mettre l'URL dans un String, mais getInputStream() ne veut que du socket.


Merci d'avance :)
A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
5 juin 2012 à 11:20
Le lien que tu as donné ne fonctionne pas, donc difficile de voir la spécificité de ton cas, mais je ne comprends pas pourquoi tu as besoin d'utiliser des sockets ici...

Voici un exemple (très simple) de lecture d'un flux http

import java.net.URL;
import java.util.Scanner;

public class Test
{
	public static void main(String...args) throws Exception
	{
		Scanner sc = new Scanner(new URL("https://www.google.fr/?gws_rd=ssl").openStream());
		
		while (sc.hasNextLine())
			System.out.println(sc.nextLine());
		
		sc.close();
	}
}
1
Merci pour ta réponse :)

En effet, ta solution semble moins compliquée et plus optimale qu'avec les sockets.

Par contre, le résultat en retour n'est pas celui que fourni le programme placé à l'URL donné (c'est donc du CGI, l'URL pointe vers un .exe)

L'URL est en intranet, c'est pour ça qu'elle ne fonctionne pas, je l'ai mise juste pour montrer le format. En gros, elle retourne juste un nombre décimal. Nombre que je cherche à récupérer.

Avec ta solution, la valeur que j'obtiens est la suivant :
java.util.Scanner[delimiters=\p{javaWhitespace}+][position=0][match valid=false][need input=false][source closed=false][skipped=false][group separator=\,][decimal separator=\.][positive prefix=][negative prefix=\Q-\E][positive suffix=][negative suffix=][NaN string=\Q?\E][infinity string=\Q?\E]
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
5 juin 2012 à 12:38
La valeur que tu as marqué est ce que tu obtiens en faisant un System.out.println(sc), or ce n'est pas le Scanner qu'il faut afficher, mais le flux qu'il parcourt comme je l'ai fait dans ma boucle while...

Remarque, avec certaines adresses il est nécessaire de passer par une URI pour avoir une URL correcte, exemple :

new URI("https://www.google.fr/?gws_rd=ssl").toURL().openStream()
0
Ah oui, je n'avais pas fait bien gaffe à ta boucle.

Ça marche nikel !
Merci beaucoup !
0