Faire une webrequest
Résolu
nagaD.scar
Messages postés
4272
Date d'inscription
Statut
Membre
Dernière intervention
-
nagaD.scar Messages postés 4272 Date d'inscription Statut Membre Dernière intervention -
nagaD.scar Messages postés 4272 Date d'inscription Statut Membre Dernière intervention -
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:
(l ip est bien sûr fausse)
j'ai dont en JS fais : (là c est en synchrone ce qui me convient )
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é :
en ayant setté :
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
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
1 réponse
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:
Ca résout mon problème.
naga
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