C# Mvvmcross:如何使用Method=Put进行web API调用
我正在使用xamarin c#和Mvvmcross 我能够使用下面返回MyObject列表的代码执行Get 如何更改此选项以便编辑MyObject 我想做一些舒缓的事情,比如:C# Mvvmcross:如何使用Method=Put进行web API调用,c#,json,xamarin,mvvmcross,portable-class-library,C#,Json,Xamarin,Mvvmcross,Portable Class Library,我正在使用xamarin c#和Mvvmcross 我能够使用下面返回MyObject列表的代码执行Get 如何更改此选项以便编辑MyObject 我想做一些舒缓的事情,比如: url = "http://address/api/MyObject/myId"; request.Method = "Put"; request.SecondParamOfWebAPICall = new MyObject(){ObjectId = "myId", FieldToChange = "123"}; 但我
url = "http://address/api/MyObject/myId";
request.Method = "Put";
request.SecondParamOfWebAPICall = new MyObject(){ObjectId = "myId", FieldToChange = "123"};
但我不知道该怎么做?。这就是我要调用的WebAPI方法
// PUT api/MyObject/id
public IHttpActionResult PutMyObject(int id, MyObject myObject)
{
//Use param id to get the required object to edit
}
这是我的代码,它执行以下操作:
public void GetMyObjectItems(Action<MyObject> success, Action<Exception> error)
{
var url = "http://address/api/MyObject";
var request = (HttpWebRequest)WebRequest.Create(url);
try
{
request.BeginGetResponse(result => ProcessResponse(success, error, request, result), null);
}
catch (Exception exception)
{
error(exception);
}
}
private void ProcessResponse(Action<MyObject> success, Action<Exception> error, HttpWebRequest request, IAsyncResult result)
{
try
{
var response = request.EndGetResponse(result);
//var locationList = response.Content.ReadAsAsync<MyObject>().Result;
using (var stream = response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
var text = reader.ReadToEnd();
var list = _jsonConverter.DeserializeObject<MyObject>(text);
success(list);
}
}
catch (Exception exception)
{
error(exception);
}
}
public void GetMyObjectItems(操作成功,操作错误)
{
变量url=”http://address/api/MyObject";
var request=(HttpWebRequest)WebRequest.Create(url);
尝试
{
BeginGetResponse(结果=>ProcessResponse(成功、错误、请求、结果),null);
}
捕获(异常)
{
错误(例外);
}
}
private void ProcessResponse(操作成功、操作错误、HttpWebRequest请求、IAsyncResult结果)
{
尝试
{
var response=request.EndGetResponse(结果);
//var locationList=response.Content.ReadAsAsync().Result;
使用(var stream=response.GetResponseStream())
使用(变量读取器=新的流读取器(流))
{
var text=reader.ReadToEnd();
var list=\u jsonConverter.DeserializeObject(文本);
成功(名单);
}
}
捕获(异常)
{
错误(例外);
}
}
所以你的类有属性ObjectId
,但在json中它有名称myId
,对于反序列化,你想设置一些映射,对吗?我的切碎器。我已经更新了这个问题,让它更清楚。我已经说过我试图调用的webAPI方法以及我是如何尝试的。如果不清楚,请告诉我。Thanksry正在搜索有关HttpWebRequest和PUT的问题-例如和-关于这方面应该已经有很多了。或者,从nuget安装HttpClient,然后使用它-切换到async
将震撼您的世界!我认为您需要使用request.write()方法来“放置”信息,然后处理响应。