Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest ModernHttpClient无法与Web应用程序项目进行比较_Rest_Xamarin_Xamarin.android_Nuget - Fatal编程技术网

Rest ModernHttpClient无法与Web应用程序项目进行比较

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应用程序安装它时,我不断收到一个错误,指出该包与项目不兼容。但它在

我目前正在使用Restclient通过web api为xamarin发送请求,它在windows和ios上运行良好,但我不为andriod工作,我搜索并找到了一个有帮助的nuget包,名为ModernHttpClient,因此它将我的代码从
var httpclient=new httpclient()
to
var-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服务,以便检查日志以检查请求是否按预期发送,等等。如果尚未这样做,请阅读。提供答案对试图回答问题的人特别有帮助。