Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mvvmcross:如何使用Method=Put进行web API调用_C#_Json_Xamarin_Mvvmcross_Portable Class Library - Fatal编程技术网

C# Mvvmcross:如何使用Method=Put进行web API调用

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"}; 但我

我正在使用xamarin c#和Mvvmcross

我能够使用下面返回MyObject列表的代码执行Get

如何更改此选项以便编辑MyObject

我想做一些舒缓的事情,比如:

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()方法来“放置”信息,然后处理响应。