我们有一个Xamarin跨平台应用程序,它使用自定义可移植类库与我们公司的API进行交互。我们遇到的问题是,当我们使用iOS模拟器上的应用程序通过PCL发出请求时,一切都按预期工作,但是当我们尝试在实际设备上执行相同的操作时,我们会得到一个" Bad请求"从我们的API返回错误代码。
我们已经能够确定当应用程序在设备上运行时,我们发布的帖子中的body参数为null,但是当我们在模拟器上执行相同的操作时,参数具有我们已经传递的值英寸
我们的PCL正在使用System.Net.HttpClient,所以我们认为这个答案可能有所帮助:HttpClient failing 遗憾的是,这并没有奏效,因为看来Xamarin应用程序还没有使用app.config文件。
我们已经尝试检查以确保我们的PCL和我们的iOS项目都引用相同版本的System.Net.HttpClient,但这似乎也无法解决问题。
我们还尝试了以下错误报告中的解决方法无效:https://bugzilla.xamarin.com/show_bug.cgi?id=20589
这篇文章过去帮助了我们,但它似乎并没有帮助我们: HttpClient missing from .Net portable subset while creating PCL in Xamarin
答案 0 :(得分:1)
当应用程序在模拟器和设备上运行时,存在几个差异。
其中之一是托管链接器在模拟器构建时禁用(在使用JIT时速度更快),同时启用了设备构建(相同逻辑:AOT构建速度更快)。
您的应用程序可能使用反射(直接或间接)并需要保留某些成员(例如序列化)。
您可以通过在模拟器构建上启用托管链接器(或在设备版本上禁用它)来尝试此操作。这将告诉您您的问题是否与托管链接器相关(或不)。