2014-11-22 44 views
0

我正在编写http请求以使用受保护的API从Web服务器检索信息(json)。 当我在AVD或设备上调试应用程序时,应用程序正常工作,但是当我发布该应用程序并尝试运行已安装的.apk文件时,它会粉碎。 我设置了Internet权限。HttpWebRequest暗恋应用程序调试发布配置

非常感谢您的任何建议。 这里是我的代码:

System.Net.ServicePointManager.ServerCertificateValidationCallback = 
new System.Net.Security.RemoteCertificateValidationCallback(delegate { return true; }); 
string username = "******"; 
string password = "******"; 
string url = String.Format("https://......"); 

var req = (HttpWebRequest)WebRequest.Create(url); 
req.Credentials = new NetworkCredential(username, password); 
var response = req.GetResponse(); 

using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
    { 
    var content = reader.ReadToEnd(); 
    MyList = JsonConvert.DeserializeObject<List<Comp>>(content); 
    } 
+0

有可能打破......我的建议了几个点,把一个尝试捕捉周围的代码块,然后登录堆栈跟踪显示在发生崩溃。 – matthewrdev 2014-11-23 21:54:25

+0

我有System.NullReferenceException:未将对象引用设置为对象的实例,但是,仅当我在“Sdk Assemblies Only”上使用“链接”选项发布应用程序时,此异常才会出现。当我使用“不连接”选项时,它正常工作。 – user3897367 2014-11-24 13:11:45

回答

2

每当我看到调试之间不同的行为,并释放我的代码我我怀疑一个链接问题构建。

尝试更改您的链接选项:项目选项> Android构建>链接器选项卡。更改发布配置匹配以匹配调试配置(我猜测它是不链接)。你不想真的以这种方式发布 - 这只是为了解决问题。然后在发布模式下构建并运行应用程序。如果现在起作用,那么问题就是关联。相反,您可以更改调试配置以匹配发布配置(可能只有Link SDK程序集)卸载应用程序,执行清理构建,然后构建并运行调试版本以查看问题是否出现在那里。如果它现在失败了,这个问题就是相关的。

对于链接帮助,请参阅:请参阅:http://developer.xamarin.com/guides/android/advanced_topics/linking/

+0

是的,当我设置链接到:“不要链接”相关的vesion正在工作,然而在阅读http://developer.xamarin.com/guides/android/advanced_topics/linking/我仍然不知道如何解决这个问题,我尝试使用建议的“PreserveAttribute”,但它仍然是一样的。也许我做错了什么。 – user3897367 2014-11-24 12:03:31

+0

然后,我建议尝试运行仅使用Link SDK Assemblies构建的Debug版本和/或添加一些错误处理和/或通过代码步进来查看具体丢失的内容。一旦你知道缺少的东西(如果有多个东西连接起来,你可能需要多次这样做),那么你可以确保它没有与链接上的PreserveAttribute,falseflag或linkkip技术连接在一起。 – 2014-11-24 16:33:21

+0

我正在使用Project options.I改变了发布配置以匹配调试配置,但它没有帮助。 – user3897367 2014-11-25 15:37:10