GetInputStream() avec socket java

[Résolu/Fermé]
Signaler
-
 Jim -
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 :)

1 réponse

Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 858
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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

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]
Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 858
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()
Ah oui, je n'avais pas fait bien gaffe à ta boucle.

Ça marche nikel !
Merci beaucoup !