ter*_*tyl 23 c# mono stream httpwebrequest cloudinary
我试图将c#cloudinary api移植到mono,我在构建http请求时遇到了一些问题.
我已经分离出这个方法来设置请求,但HttpWebRequest.ContentLength在单声道中变成-1,但是.net内容是正确构建的.
我在Mac上运行最新的Xamarin Studio,我正在构建一个MONO/.NET 4.0库Mono版本:2.10.12
编辑:简化代码,此测试在Visual Studio中传递但在Xamarin工作室中失败
编辑:如果有人想帮助,代码被推送到github
[Test]
public void StreamTest()
{
var request = System.Net.HttpWebRequest.Create("http://foo.com");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (var writer = new System.IO.StreamWriter(request.GetRequestStream()))
{
writer.Write("anything");
}
Assert.IsTrue(request.ContentLength > 0);
}
Run Code Online (Sandbox Code Playgroud)
当你这样做时
System.Net.HttpWebRequest.Create("http://foo.com");
Run Code Online (Sandbox Code Playgroud)
您实际上创建了内部类System.Net.Browser.BrowserHttpWebRequest的实例
这是继承层次结构
System.Net.WebRequest
System.Net.HttpWebRequest
System.Net.Browser.PolicyBasedWebRequest
System.Net.Browser.BrowserHttpWebRequest
内容长度在PolicyBasedWebRequest中处理,在ctor中用-1初始化并且从未改变;我建议你手动设置一下。