Je dois supprimer le dernier saut de ligne d'un webrequest http pour pouvoir communiquer avec un service json-rpc. La requête générée par .net ressemble à ceci.Suppression d'un saut de ligne de l'en-tête d'une requête Web C#
POST http://localhost.:8332/ HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.1)
Authorization: Basic dGlwa2c6dGlwa2c=
Host: localhost.:8332
Content-Length: 42
Expect: 100-continue
Connection: Keep-Alive
{"id":1,"method":"getinfo","params":[]}
Ce que je besoin ne serait-ce (remarquez l'alimentation de ligne manquante après la dernière valeur d'en-tête et le début de la teneur en JSON):
POST http://localhost.:8332/ HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.1)
Authorization: Basic dGlwa2c6dGlwa2c=
Host: localhost.:8332
Content-Length: 42
Expect: 100-continue
Connection: Keep-Alive
{"id":1,"method":"getinfo","params":[]}
Je ne peux pas trouver quelque chose où je pouvais manipuler l'en-tête qui est réellement envoyé au service.
Voir http://www.bitcoin.org/smf/index.php?topic=2170.0 pour plus d'information sur le problème ...
Si le service a besoin de la requête comme votre deuxième exemple, il n'est pas valide HTTP. HTTP nécessite une ligne vide séparant les en-têtes du corps (le cas échéant). –
Avez-vous testé cela et avez vérifié qu'il fonctionne sans le retour à la ligne? Pour tester ceci, vous pouvez utiliser telnet (lancez telnet hostname 80, puis passé dans votre requête depuis un éditeur de texte). Je n'ai jamais entendu parler d'un serveur web qui se souciait de \ r \ n ou de \ n, donc j'espère que cela ne fera aucune différence. Si c'est le cas, vous pouvez utiliser la classe NetworkStream pour savoir exactement quels caractères vous envoyez. –
En outre, votre requête HTTP semble invalide car elle devrait juste avoir un chemin après le verbe POST, au lieu d'une URL complète (c'est-à-dire/au lieu de http://localhost.:8332/). Mais peut-être que juste un violoniste. –