【发布时间】:2016-10-21 18:13:40
【问题描述】:
我正在使用 Xamarin 开发移动应用程序。这使得我无法调用 webRequest.ContentLength = 0。
这是我尝试发布的方式:
客户来电:
await new AssetEndpoint().UpdateStatus(Authentication, CurrentAsset, ApprovalStatuses[0]);
AssetEndpoint.UpdateStatus:
public Task UpdateStatus(Authentication auth, Asset asset, ApprovalStatus newStatus)
{
return PostResponseAsync(auth, string.Format(
ApiUpdateStatus, asset.UID, newStatus.Id));
}
Endpoint.PostResponseAsync:
protected async Task<string> PostResponseAsync(Authentication auth, string apiCall)
{
var request = WebRequest.Create(string.Concat(BaseUriPath, apiCall)) as HttpWebRequest;
request.ContentType = "application/json";
request.Method = method;
request.Headers["Authorization"] = string.Concat("bearer ", auth.Token.Value);
var response = await request.GetResponseAsync().ConfigureAwait(false);
using (var reader = new StreamReader(response.GetResponseStream()))
{
return await reader.ReadToEndAsync();
}
}
所以我会修复这个错误吗?我似乎无法弄清楚如何设置内容长度。
【问题讨论】:
-
请出示
CreateRequest方法的代码 -
@MatiasCicero 我已更新帖子以包含 CreateRequest 代码。我把代码拆开,放在 PostResponseAsync 方法中,这样更容易阅读。
-
@kformeck 你没有发布任何东西...你在哪里写入请求流?顺便说一句:一个奇怪的名字 PostResponseAsync
-
这对你有用吗?
request.Content = new ByteArrayContent(content); request.Content.Headers.ContentLength = content.Length; -
@LukePothier,不,我也无法设置 request.Content。 Xamarin 已经取消了 .NET 的一些功能,以便我相信移动设备可以保持小型化。所以有些事情不能在 Xamarin 中完成,而可以在常规的旧 .NET 中完成
标签: c# .net http mobile xamarin