Sto provando a scrivere una piccola applicazione di test utilizzando WebApi. Per lo più lavoro, sono in grado di ottenere dati dal mio servizio web e visualizzarli su Android.Eccezione chiamata PutAsJsonAsync da Xamarin
ho aggiunto un pulsante, e utilizzato lo stesso codice che avevo usato nel mio WinForms client di prova:
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";
}
}
Questo funziona bene in Windows Form Test App, ma in app Xamarin ottengo un'eccezione on client.PutAsJsonAsync:
E/mono-rt (7519): [ERRORE] irreversibile non gestita: System.TypeLoadException: Impossibile caricare il tipo 'System.Net.Http.ObjectContent`1 [T]' dall'assembly ' System.Net.Http.Formatting, Version = 5.1.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 '.
Qualche suggerimento? Utilizzando Xamarin 3.
edit:
Funziona se formatto il contenuto manualmente:
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);
Ho tutti i riferimenti corretti, per quanto posso vedere. Ho usato il pacchetto nuget del client WebApi.
Riferimenti:
Newtonsoft.Json
System.Net.Http
System.Net.Http.Extensions
System.Net.Http.Formatting
System.Net.Http.Primitives
Ho lo stesso problema, ma con 'PostAsAsync()', sei stato in grado di risolverlo? – markmnl
@markmnl: Sembra essere correlato alla disponibilità delle librerie PCL HttpClient. Hai controllato: http://stackoverflow.com/questions/21844262/httpclient-missing-from-net-portable-subset-while-creating-pcl-in-xamarin –
@marceln Non sono sicuro che questo sia il problema - Riesco a vedere la lib fine - sto usando HttpClient dal pacchetto NuGet per il PCL - tutto si compila e fallisce solo quando si esegue su Android dopo aver eseguito il metodo 'PostAsJsonAsync()' ... La soluzione del PO funziona per me in l'interim anche se ora sto ottenendo rete è irraggiungibile, ma questo è un altro problema – markmnl