我正在尝试在Visual Studio 2013中设置一个Xamarin项目(第一次)。
我正在为我的API使用者类使用可移植类库,其中(以及其他方法)包含这样的GET方法:
private static async Task<string> Get(string endpoint)
{
try
{
var client = new HttpClient();
client.BaseAddress = new Uri(API_URL);
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.GetAsync(endpoint).Result;
string content = await response.Content.ReadAsStringAsync();
return content;
}
catch (Exception ex)
{
var t = ex.Message;
}
return null;
}
API在Azure上的公共服务器上设置。我已经从Web项目测试了API;它工作得很好。 然而,当我通过我的Mac上的VS13和Xamarin Build主机运行iOS应用程序时,我在尝试连接到API时遇到异常(使用可移植类库中的excat相同方法)。例外是:
System.Net.WebExceptionStatus.ConnectFailure
没有进一步说明。 我已经测试过可以从作为构建主机的Mac访问API,这让我想知道,如果有一些条件通过iOS应用程序连接到API,我不知道。
我没有任何体验应用程序的经验,这是我的第一次尝试。就像我说的;当通过Web项目访问时,API工作得很好。我在这里错过了什么?
答案 0 :(得分:1)
根据迈克尔对我之前response的评论,似乎解决方案是调整您的OS X防火墙,可能与此相关问题相同:How do I get the Mac OS X Firewall to permanently allow my iOS app?
答案 1 :(得分:0)
您是否检查过是否可以连接其他任何服务?也许尝试谷歌举例。如果它不起作用,那么我也会检查:
var response = client.GetAsync(endpoint).Result;
因为这件事也可能是麻烦制造者。如果处理异步任务,你不应该像那样使用它们,而是等待它们(因此得到结果):
var response = await client.GetAsync(endpoint);
答案 2 :(得分:0)
从完整的.net框架中使用 System.net.Http.HttpClient 似乎是你的问题。如您所见,它会在您引用该程序集时减少项目的目标。
您最好使用HttpWebRequest作为基类库(BCL)的一部分,并且可以使用Android / iOs / WinPhone。
试试这个:
<div class="col-sm-2">
<ul class="nav nav-pills nav-stacked nav-static"> <!--stacked untuk jadi vertical -->
<li class="active"><a>Create Case</a></li>
<li><a href="wf-listofcase.php">List of cases</a></li>
<li><a href="linksofapps.html">Links of Apps</a></li>
</ul>
</div>
此处还有一些关于使用 HttpClient 的问题的信息:http://forums.xamarin.com/discussion/7719/using-httpclient
我希望有所帮助。而且我也没有多少经验,所以不要把任何事情视为理所当然: - )