尝试调用ReadAsAsync<>时出现以下错误System.Net.Http.Formatting的Bitrium.Http.Extensions重新包装中的扩展方法。
类型中的方法'SerializeToStreamAsync' 程序集中的“System.Net.Http.ObjectContent” 'Bitrium.Http.Extensions,Version = 1.0.0.0,Culture = neutral, PublicKeyToken = 43390f7aed073600'没有实现。
我在PCL项目中有类似于以下代码的东西,我通过简单的单元测试进行测试。我没有实现await模式,但我不相信它与此相关。
public class RestApi()
{
public void Get()
{
HttpResponseMessage response = new HttpResponseMessage();
HttpClient client = new HttpClient();
response = client.GetAsync("http://someUrl.com").Result;
var modelList = response.Content.ReadAsAsync<List<Model>>().Result; // I get the exception here
}
}
对方法的调用:
var target = new RestApi();
target.Get();
此时我能做些什么吗?我不一定需要Async功能,所以另一个仍然将我的响应转换为我的模型的实现也可以。
答案 0 :(得分:6)
我没有使用Bitrium重新打包来尝试重用System.Net.Http.Formatting中的ReadAsAsync<T>
扩展方法,而是选择 Json.NET 。因此,不需要依赖重新包装,而只需要依赖包含HttpClient(NuGet <package id="Microsoft.Net.Http" version="2.2.18" targetFramework="portable-net45+sl50+MonoAndroid10+MonoTouch10" />
)的lib的PCL构建的当前标准实现。
var resultString = response.Content.ReadAsStringAsync().Result;
Contacts = JsonConvert.DeserializeObject<List<T>>(resultString);
我发现this post对新的Json.NET片段很有帮助。