HttpWebRequest:发布版本时拒绝访问 - Xamarin (Android)
HttpWebRequest: Access denied on release build - Xamarin (Android)
我正在尝试使用 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);
}
}
我是 运行 外部设备上的应用程序。
在调试模式下一切正常,但是当我切换到发布模式时,HttpWebRequest returns 一个带有消息 "Error: ConnectFailure (Access denied)"
的 WebException
我已经尝试为 Debug 和 Release 模式设置相同的打包和链接器选项,但是 Debug 版本继续工作,而 Release 版本继续失败。
我也试过在Release模式下设置Linking为None,但是也没用。
我是不是漏掉了什么?
您需要通过在AndroidManifest.xml中设置标志来明确告诉Android您的应用可以访问互联网。当您处于调试模式时,默认情况下启用它,但在发布版本中您需要专门设置它。
我正在尝试使用 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);
}
}
我是 运行 外部设备上的应用程序。 在调试模式下一切正常,但是当我切换到发布模式时,HttpWebRequest returns 一个带有消息 "Error: ConnectFailure (Access denied)"
的 WebException我已经尝试为 Debug 和 Release 模式设置相同的打包和链接器选项,但是 Debug 版本继续工作,而 Release 版本继续失败。
我也试过在Release模式下设置Linking为None,但是也没用。
我是不是漏掉了什么?
您需要通过在AndroidManifest.xml中设置标志来明确告诉Android您的应用可以访问互联网。当您处于调试模式时,默认情况下启用它,但在发布版本中您需要专门设置它。