我已经制作了一个REST API,我想使用我的Xamarin.iOS应用程序来使用它。 基本上我想通过向我的一个API函数发送一些参数来调用我的Xamarin应用程序中的API。
我尝试了Xamarin官方网站上提供的资源,但我是新手,所以我无法理解它是如何完成的。 REST API由我正在使用的网络本地托管。它不是托管在静态IP上。 请指导我。
答案 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);
}
}
}