从外部服务器调用内部Web Api

时间:2016-07-21 14:24:25

标签: c# asp.net-web-api xamarin

我构建了一个Web Api,它托管在一个只允许内部访问的服务器中,我有一个Cliente-Side应用程序。我必须在中间建立一些东西来建立这种联系。

Cliente-Side< - > SOMETHING< - > Web Api(内部访问) - >数据库

我需要构建什么?我是个乞丐,我现在遇到这个问题。

2 个答案:

答案 0 :(得分:0)

确保您可以通过设备点击网络API的网址。简单的路由是在您的设备上运行网络功能示例,并看到您可以使用IsReachable和IsRemoteReachable API访问服务器。它的Xamarin表单,不是纯Xamarin,但应该让你知道你是否可以点击你的服务器。

https://blogs.msdn.microsoft.com/devfish/2016/06/22/xam-plugins-connectivity-all-apis-sample/

答案 1 :(得分:0)

这是一个函数的实现,它显示从客户端应用程序到Web服务的get和post数据,这将在桌面应用程序(win form等)上运行。要使用下面相同的代码从其他网站访问web api,您必须在web api项目中启用cors

public static  async Task UploadAsync(ReadingModel reading)
{
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("http://your-api-domain.net/");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        // HTTP GET
        HttpResponseMessage response = await client.GetAsync("api/yourapi");
        if (response.IsSuccessStatusCode)
        {
            Product product = await response.Content.ReadAsAsync<Product>();
            Console.WriteLine("{0}\t${1}\t{2}", product.Name, product.Price, product.Category);
        }

        // HTTP POST
        try
        {
            HttpResponseMessage response = await client.PostAsJsonAsync("api/yourapi", reading);
            if (response.IsSuccessStatusCode)
            {
                // do your stuff
            }
        }
        catch (Exception)
        {

        }

    }
}