我正在尝试使用Xamarin为Android开发一个简单的应用程序。该应用程序向Web API发出HTTP请求。
这是主要代码:
var messageTxt = FindViewById<EditText>(Resource.Id.message);
var apiUrlTxt = FindViewById<EditText>(Resource.Id.apiurl);
var url = String.Format("{0}/api/values/{1}", apiUrlTxt.Text, messageTxt.Text);
var j = await FetchApi(url);
var apiReturn = FindViewById<TextView>(Resource.Id.apiReturn);
apiReturn.Text = j;
这是FetchApi方法:
private async Task<string> FetchApi(string url)
{
try
{
var request = HttpWebRequest.Create(url);
request.ContentType = "application/json";
request.Method = "GET";
request.Timeout = 10000;
using (var response = await request.GetResponseAsync())
{
using (var s = response.GetResponseStream())
{
return await Task.Run(() => JsonObject.Load(s));
}
}
}
catch(Exception ex)
{
return await Task.Run(() => "Erro - " + ex.Message);
}
}
我正在外部设备上运行该应用。 在调试模式下一切都很好,但是当我切换到Release时,HttpWebRequest返回一个WebException,消息“错误:ConnectFailure(拒绝访问)”
我已经尝试为Debug和Release模式设置Packaging和Linker选项相同,但Debug版本继续工作,Release版本仍然失败。
我还试图在发布模式下将链接设置为无,但它也不起作用。
我在这里错过了什么吗?
答案 0 :(得分:4)
您需要通过在AndroidManifest.xml中设置标记,明确告诉Android您的应用可以访问互联网。当您处于调试模式时,默认情况下会启用此功能,但在发布版本中,您需要专门设置它。