HttpRequest - construire header complet (?)

Résolu
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 17 nov. 2016 à 10:41
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 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

2 réponses

@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
17 nov. 2016 à 12:34
bonjour

il faudrait créé un objet json
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
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?
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
17 nov. 2016 à 15:21
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
0
Rejoignez-nous