HttpRequest - construire header complet (?) [Résolu]

nagaD.scar 4148 Messages postés samedi 8 septembre 2007Date d'inscription 13 décembre 2017 Dernière intervention - 17 nov. 2016 à 10:41 - Dernière réponse : nagaD.scar 4148 Messages postés samedi 8 septembre 2007Date d'inscription 13 décembre 2017 Dernière intervention
- 17 nov. 2016 à 15:21
Salut à tous!

Pour faire simple, j'ai côté serveur un code qui me permet de faire une requête http (pour info, il y a un listner sur une application de gestion de port com).

L application que je fais ayant besoin d être la plus réactive possible, j'aurai voulu faire la requete coté client plutot que serveur via XMLHttpRequest, histoire de gagner quelques ms.

Voici ce qui est envoyé côté serveur, et ca fonctionne:

Request-Header: POST / HTTP/1.1
Request-Header: Content-Length: 179
Request-Header: Content-Type: text/plain
Request-Header: Accept: */*
Request-Header: Host: 1.2.3.4:85
Request-Header: User-Agent:
Request-Header: Connection: close
Request-Header: Host: 1.2.3.4
Request-Header: Dest:
Request-Body:
<xml>des trucs xml</xml>

(l ip est bien sûr fausse)

j'ai dont en JS fais : (là c est en synchrone ce qui me convient )
			function httpGetAsync(theUrl, sXML, callback)
			{
			    var xmlHttp = new XMLHttpRequest();
			    /*xmlHttp.onreadystatechange = function() { 
			        if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
			            callback(xmlHttp.responseText);
			    }*/
			    xmlHttp.open("POST", theUrl, false); // true for asynchronous 
			    xmlHttp.send(sXML);
			  alert(xmlHttp.responseText);
			}


J'ai tenté via
setRequestHeader
de setter mes infos de manière à me calquer sur les headers fonctionnant mais certains ne me permettent pas des les modifier: par exemple Host est interdit (vous remarquerez que dans la requete de base l info est doublé ... je ne sais pas comment celui qui a fait le listener à codé mais a prioris c est mandatory ..), ou encore certains sont sans effet (tel que connexion que je voudrais setter à close).

Bref voilà le header envoyé :
 Request-Header: POST / HTTP/1.1
Request-Header: Content-Type: text/plain
Request-Header: Accept: */*
Request-Header: DNT: 1
Request-Header: Accept-Language: de-CH
Request-Header: Accept-Encoding: gzip, deflate
Request-Header: User-Agent: Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
Request-Header: Host: 2.23.45.170:85
Request-Header: Content-Length: 179
Request-Header: Connection: Keep-Alive
Request-Header: Pragma: no-cache
Request-Body:
<xml>des trucs xml</xml>


en ayant setté :

				xmlHttp.setRequestHeader("Accept", "*/*");
				xmlHttp.setRequestHeader("Content-Type", "text/plain");
				xmlHttp.setRequestHeader("Accept-Encoding", "");
				xmlHttp.setRequestHeader("Connection", "close");


Je crois que ce n'est pas possible, mais est-ce qu il y aurai un moyen d'envoyer un header que je ferai de a à z? D'autres classes pour faire de la request?
Ou un moyen d'ouvrir un socket et d'écrire ? (chose que je n ai pas encore regardé et que je vais faire)

merci d'avance, et s'il y a d autres idées je suis preneur ^^

naga
Afficher la suite 

3 réponses

Répondre au sujet
@karamel 1650 Messages postés vendredi 9 mai 2008Date d'inscriptionModérateurStatut 14 décembre 2017 Dernière intervention - 17 nov. 2016 à 12:34
0
Utile
1
bonjour

il faudrait créé un objet json
nagaD.scar 4148 Messages postés samedi 8 septembre 2007Date d'inscription 13 décembre 2017 Dernière intervention - 17 nov. 2016 à 13:36
Salut,

J'étais mal partis au départ car je ne connais pas le JSON. Mais apparemment c'est un format de données pour la communication.

Et donc si je ne plante pas, ca ne m aide pas vu que je ne peux pas modifier quoi que ce soit sur le listener. ou alors j'ai pas du tout compris ce que c'était?
Commenter la réponse de @karamel
nagaD.scar 4148 Messages postés samedi 8 septembre 2007Date d'inscription 13 décembre 2017 Dernière intervention - 17 nov. 2016 à 15:21
0
Utile
J'ai ma solution mais je ne penses pas qu elle sera applicable dans d'autres contextes: Comme on le voit dans mon post, ce qui fonctionnait contenait deux "Host" dans le header.
Avec XMLHttpRequest on ne peux pas ajouter de second "Host" (ni même l editer), mais en faisant:


xmlHttp.setRequestHeader("Garb", "\r\nHost: 1.2.3.4");


Ca résout mon problème.

naga
Commenter la réponse de nagaD.scar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.