【发布时间】:2016-01-04 14:23:31
【问题描述】:
我需要将自定义有效负载发送到网络服务器,并且我使用 HttpWebRequest 来执行此操作。就我而言,它是一个 json-rpc。我认为我发送什么并不重要,只要它不是像 html 表单或邮件附件那样编码的表单数据。
查看我的代码:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://192.168.0.108/api/homematic.cgi");
byte[] rpc_request = Encoding.ASCII.GetBytes("{ \"method\": \"Session.login\", \"params\": [ \"username\": \"root\", \"password\": \"root\" ], \"id\": null}");
request.ContentLength = rpc_request.Length;
request.ContentType = "application/json";
using (var stream = request.GetRequestStream())
stream.Write(rpc_request, 0, rpc_request.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Console.WriteLine("Status Code = {0}", response.StatusCode);
Console.WriteLine(new StreamReader(response.GetResponseStream()).ReadToEnd());
非常简单。但是C#不喜欢payload的内容,在调用request.GetRequestStream().Write时会抛出System.Net.ProtocolViolationException。我什至无法启动请求!
为什么 C# 会查看负载的内容,我该如何阻止它?
【问题讨论】:
标签: c# http httpwebrequest json-rpc