Ich versuche, eine kleine Testanwendung mit WebApi zu schreiben. Ich habe es meistens funktioniert, ich bin in der Lage, Daten von meinem Web-Service zu bekommen und es in Android anzuzeigen.Ausnahme Aufruf von PutAsJsonAsync von Xamarin
habe ich eine Taste, und verwenden den gleichen Code, den ich in meinem Winforms Test-Client benutzt hatte:
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";
}
}
Dies funktioniert in der Windows Forms-Test-App, aber in der Xamarin App erhalte ich eine Ausnahme on client.PutAsJsonAsync:
E/mono-rt (7519): [FEHLER] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Der 'System.Net.Http.ObjectContent`1 [T]' aus Assembly konnte nicht geladen werden System.Net.Http.Formatting, Version = 5.1.0.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35 '.
Irgendwelche Vorschläge? Xamarin Mit 3.
edit:
Es funktioniert, wenn ich manuell den Inhalt formatieren:
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);
Ich habe alle Referenzen korrekt, soweit ich sehen kann. Ich habe das WebApi Client nugget Paket verwendet. Referenzen
:
Newtonsoft.Json
System.Net.Http
System.Net.Http.Extensions
System.Net.Http.Formatting
System.Net.Http.Primitives
ich das gleiche Problem haben, aber mit 'PostAsAsync()', haben Sie in der Lage gewesen, es zu lösen? – markmnl
@ markmnl: Es scheint mit der Verfügbarkeit von HttpClient PCL-Bibliotheken verwandt zu sein. Haben Sie dies überprüft: http://stackoverflow.com/questions/21844262/httpclient-missing-from-net-portable-subset-while-creating-pcl-in-xamarin –
@marceln Ich bin mir nicht sicher, dass das Problem ist - Ich kann die Lib gut sehen - ich benutze den HttpClient aus dem NuGet-Paket für die PCL - alles kompiliert und es schlägt nur bei Android nach dem Ausführen der 'PostAsJsonAsync()' Methode fehl ... Die Workaround des OP funktioniert für mich in die Zwischenzeit, obwohl ich jetzt bekommen Netzwerk ist unerreichbar, aber das ist ein anderes Problem – markmnl