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

Messages postés
4265
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
- - Dernière réponse : nagaD.scar
Messages postés
4265
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
- 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 

2 réponses

Messages postés
1717
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2019
47
0
Merci
bonjour

il faudrait créé un objet json
nagaD.scar
Messages postés
4265
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
16 -
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
Messages postés
4265
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
16
0
Merci
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