Rest ModernHttpClient无法与Web应用程序项目进行比较
我目前正在使用Restclient通过web api为xamarin发送请求,它在windows和ios上运行良好,但我不为andriod工作,我搜索并找到了一个有帮助的nuget包,名为ModernHttpClient,因此它将我的代码从Rest ModernHttpClient无法与Web应用程序项目进行比较,rest,xamarin,xamarin.android,nuget,Rest,Xamarin,Xamarin.android,Nuget,我目前正在使用Restclient通过web api为xamarin发送请求,它在windows和ios上运行良好,但我不为andriod工作,我搜索并找到了一个有帮助的nuget包,名为ModernHttpClient,因此它将我的代码从var httpclient=new httpclient()tovar-httpClient=new-httpClient(new-NativeMessageHandler())但当我为web应用程序安装它时,我不断收到一个错误,指出该包与项目不兼容。但它在
var httpclient=new httpclient()
tovar-httpClient=new-httpClient(new-NativeMessageHandler())
但当我为web应用程序安装它时,我不断收到一个错误,指出该包与项目不兼容。但它在android、ios和windows中安装ok。我尝试从web应用程序中卸载它,但除非它出现在所有项目中,否则我无法在代码中工作
因此,我想找出该软件包与web应用程序或Restclient请求解决方案不兼容的原因,该解决方案不适用于android。不幸的是,没有列出任何依赖项,但将URL的域名更改为使用monoandroid、monotouch、portable-net45+winrt45+wp8+wpa81和xamarin.ios10。因此,这些是包支持的目标框架
检查包支持的TFMs(目标框架名字对象)的另一种方法是查找/下载nupkg,然后将其作为zip文件打开,或者使用查找lib/
下的子文件夹
你没有说你的web应用程序使用的是什么目标框架,但这就是事情开始变得非常复杂的地方,我不太理解。NET Framework TFM与其他较低版本的.NET Framework TFM兼容。类似地,.NET Core TFM与其他较低版本的.NET Core TFM兼容。NuGet还支持回退或替代TFM兼容性,以允许.NET核心应用程序使用针对.NET Framework的库,但这是最好的猜测,可能会在运行时失败(我不确定,甚至可能无法编译,但恢复会成功,但会出现警告)。如果您没有收到警告,而是收到了一个错误,它向我建议portable-net45与net45不兼容,因此可能与您在web应用中使用的任何目标框架都不兼容(除非您的web应用以net40或更早版本为目标)
话虽如此,当我查看包以了解它针对哪些框架时,我看到包的全部要点是使用平台本机HTTP堆栈,而不是移动平台上的Xamerin HTTP堆栈。您的web应用程序不是在移动平台上运行的,而是在.NET Core或.NET Framework上运行的,因此您不需要该软件包。我建议您使用
#if
、#else
和#endif
仅在Android和IOS上使用NativeMessageHandler,然后在其他平台上使用默认的HTTPClient构造函数(或使用HttpMessageHandler)。您的Web项目是在生成自己的HTTP请求,还是只是响应客户端的请求?如果是后者,那么就没有理由需要安装ModernHttp包。它发出HTTP请求。我使用了\If
、\else
和\endif
作为特定于平台的工具,它可以正常工作。谢谢,所以您已经解决了这个问题。但是如果你能帮我的话,这个请求仍然不适用于android请提出一个新的问题,并提供更多关于你尝试调用的服务、你遇到的错误、它在android emulator中失败还是只在真实设备中失败的详细信息,您是否尝试调用您控制的web服务,以便检查日志以检查请求是否按预期发送,等等。如果尚未这样做,请阅读。提供答案对试图回答问题的人特别有帮助。