我正在尝试使用WebApi编写一个小型测试应用程序.我主要使用它,我能够从我的Web服务获取数据并在
Android中显示它.
我添加了一个按钮,并使用了我在Winforms测试客户端中使用的相同代码:
async void buttonSave_Clicked(object sender,EventArgs e) { HttpClient client = new HttpClient (); Customer data = new Customer () { Surname = editSurname.Text,GivenName = editGivenName.Text}; var result = await client.PutAsJsonAsync("http://10.0.0.4/WebApplication1/api/Customers/2",data); if (result.IsSuccessStatusCode ) { labelStatus.Text = "Saved"; } }
这在Windows窗体测试应用程序中工作正常,但在Xamarin应用程序中,我在client.PutAsJsonAsync上获得异常:
E / mono-rt(7519):[错误]致命未处理异常:System.TypeLoadException:无法从程序集’System.Net.Http.Formatting,版本加载类型’System.Net.Http.ObjectContent`1 [T]’ = 5.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35′.
有什么建议?使用Xamarin 3.
编辑:
如果我手动格式化内容,它可以工作:
string sData = Newtonsoft.Json.JsonConvert.SerializeObject(data); HttpContent content = new System.Net.Http.StringContent(sData,System.Text.Encoding.UTF8,"application/json") ; var result = await client.PutAsync("http://10.0.0.4/WebApplication1/api/Customers/2",content);
据我所知,我的所有参考文献都是正确的.我使用了WebApi Client nuget包.
参考文献:
Newtonsoft.Json System.Net.Http System.Net.Http.Extensions System.Net.Http.Formatting System.Net.Http.Primitives
解决方法
您需要将以下Nuget包安装到引用您的HttpClient项目的所有项目中
> Microsoft.Bcl.Build
> Microsoft.Bcl
这些是我构建项目时Visual Studio的警告,在我完成之后,它工作了!