2010-12-09 104 views
1

我需要从http webrequest中删除最后一个换行以便与json-rpc服务进行通信。 .net生成的请求看起来像这样。从c#web请求的头部中删除换行

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":[]} 

我需要将这个(通知后,最后报头值丢失换行符和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":[]} 

我无法找到任何东西,我可以操纵这是实际发送到服务的标题。

http://www.bitcoin.org/smf/index.php?topic=2170.0有关该问题的更多背景...

+2

如果服务需要像第二个示例那样的请求,那么它不是有效的HTTP。 HTTP需要一个空白行将标题与正文分开(如果有的话)。 – 2010-12-09 18:57:55

+0

您是否测试过这个版本并验证过它没有换行符?要测试这个,你可以使用telnet(运行telnet主机名80,然后在文本编辑器的请求之后)。我从来没有听说过关心\ r \ n或\ n的网络服务器,所以希望这没有任何区别。如果确实如此,您可以使用NetworkStream类来仔细考虑您发送的字符。 – 2010-12-10 02:50:16

回答

1

终于解决了我的(核)问题。我与rpc服务沟通的问题是我没有设置内容类型。该服务需要内容类型的“application/json-rpc”才能正常工作。