如何在Xamarin.iOS中使用REST api?

时间:2016-05-12 18:20:34

标签: rest xamarin xamarin.ios

我已经制作了一个REST API,我想使用我的Xamarin.iOS应用程序来使用它。 基本上我想通过向我的一个API函数发送一些参数来调用我的Xamarin应用程序中的API。

我尝试了Xamarin官方网站上提供的资源,但我是新手,所以我无法理解它是如何完成的。 REST API由我正在使用的网络本地托管。它不是托管在静态IP上。 请指导我。

2 个答案:

答案 0 :(得分:0)

我建议Refit,您可以将其安装为NuGet包。它简单易用。

  

Refit允许我们定义一个描述我们正在调用的API的接口,并且Refit框架处理对服务的调用并反序列化返回。

看看这篇精彩的博客文章,了解如何设置它以及其他可能对您有所帮助的软件包。 http://arteksoftware.com/resilient-network-services-with-xamarin/

之前我使用过RestSharp但是Refit很容易运行。

答案 1 :(得分:0)

如果你只想点击Web端点,你真的不需要一个花哨的插件。我只是使用基本的WebRequest API。

var request = WebRequest.CreateHttp(YOUR_URL_HERE);
request.Method = "GET";
request.ContentType = "application/JSON";
request.BeginGetResponse(ResponseComplete, request);

...然后你的回应方法可以是......

protected void ResponseComplete(IAsyncResult result)
{
    try
    {
        var request = result.AsyncState as HttpWebRequest;
        if (request != null)
        {
            Debug.WriteLine("Completed query: " + request.RequestUri);
            using (var streamReader = new StreamReader(response.GetResponseStream()))
            {
                var result = streamReader.ReadToEnd();
                Debug.WriteLine("Query Result: " + result);
            }
        }
    }
}

...如果您需要发布数据,可以在request.BeginGetRequestStream(PostData, request);之前添加request.BeginGetResponse(ResponseComplete, request);,并使您的GetRequestStream处理方法符合......

protected void PostData(IAsyncResult result)
{
    var request = result.AsyncState as HttpWebRequest;
    if (request != null)
    {
        using (var postStream = request.EndGetRequestStream(result))
        {
            var json = JsonConvert.SerializeObject(DATA_TO_POST);
            Debug.WriteLine("Posting data: " + json);
            var byteArray = Encoding.UTF8.GetBytes(json);
            postStream.Write(byteArray, 0, byteArray.Length);
        }
    }
}