我们已经创建了一个可移植类库项目来为我们的ASP.NET Web Api Rest服务编写客户端/包装器/代理项目。
我会直截了当地说:似乎我们不能做有身体的POST / PUT请求。
var dataBytes = Encoding.UTF8.GetBytes(data);
var requestHandle = request.BeginGetRequestStream(ar =>
{
using (var stream = request.EndGetRequestStream(ar))
{
stream.Write(dataBytes, 0, dataBytes.Length); // Exception thrown here
}
}, null);
当我尝试写入请求时,我得到一个例外:
请求已中止:连接意外关闭。
经过一段时间后,我认为stream.CanWrite为false,因此它不可写,这几乎意味着我们无法对正文进行任何POST请求。
有人可以帮助我们,告诉我们应该如何处理POST请求吗?我在这里找到了另一篇文章,答案是看看RestSharp,但由于它不支持Portable Library,因此似乎无法工作。
感谢任何帮助。
答案 0 :(得分:0)
这看起来不像是特定于可移植类库的问题。如果您在特定于平台的库中运行相同的代码,我预计它将以相同的方式失败。所以我希望问题是你创建或使用HttpWebRequest的方式,或者是服务器端的问题。
您正在运行此平台并获得失败?
您可能需要查看Async Targeting Pack(more info)。这将添加async和等待支持以及一些扩展方法,如GetRequestStreamAsync(),因此您将能够使用以下代码(在异步方法内):
using (var stream = await request.GetRequestStreamAsync())
{
stream.Write(dataBytes, 0, dataBytes.Length);
}
行为应该是相同的,但我不认为这本身会解决你的问题。