不多说,直接上代码
通过使用反射解决了这个问题,以欺骗WebRequest
使用GET请求发送正文是合法的(根据最新的RFC)。我要做的是将ContentBodyNotAllowed
HTTP动词“ GET”设置为false。
var request = WebRequest.Create(url);
request.ContentType = "application/json";
request.Method = "GET";
var type = request.GetType();
var currentMethod = type.GetProperty("CurrentMethod", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(request);
var methodType = currentMethod.GetType();
methodType.GetField("ContentBodyNotAllowed", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(currentMethod, false);
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write("you json ");
但是请注意,该属性ContentBodyNotAllowed
属于静态字段,因此当其值更改时,它对于程序的其余部分仍然有效。对我而言,这不是问题