【问题标题】:How to consume ASMX soap in Xamrin Android application?如何在 Xamarin Android 应用程序中使用 ASMX 肥皂?
【发布时间】:2019-12-12 16:26:58
【问题描述】:

我下载了示例,并在 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/web-services/asmx 的 Xamarin 表单中完成了“使用 ASP.NET Web 服务 (ASMX)”的教程。如果我从 Visual Studio 运行,Web 服务在浏览器中运行一切正常。如果我将 android 应用程序设为它运行的启动项目,但不会从服务中获取待办事项。我已经制定了防火墙规则,修改了使用 ASP.NET Web 服务 (ASMX),并在您的机器上创建了自签名开发证书。

我坚持的是如何配置您的项目以使用适当的 HttpClient 网络堆栈进行调试构建。有关详细信息,请参阅配置您的项目。

https://docs.microsoft.com/en-us/xamarin/cross-platform/deploy-test/connect-to-local-web-services#configure-your-project

下面的代码去哪里了?我是否在下面的代码中将我的端口更改为 49178?

//设备类 公共静态字符串 BaseAddress = Device.RuntimePlatform == Device.Android ? "https://10.0.2.2:5001" : "https://localhost:5001"; 公共静态字符串 TodoItemsUrl = $"{BaseAddress}/api/todoitems/";

【问题讨论】:

  • 端口通常在主机之后...所以你必须改变5001你也必须使用模拟器因为显然10.0.2.2localhost在真实设备上都不起作用
  • 我正在运行项目,它正在将它发送到模拟器它只是没有点击 web 服务或抛出错误!
  • 它只是没有访问网络服务或抛出错误!我们不知道 - 这不是问题......如果你遇到一些错误值得将它们包括在问题中
  • 我将简化 Android 应用程序在调试中运行,ASMX Soap 服务在调试中运行。但彼此之间不交流。喜欢通过显示待办事项来展示示例图片!
  • 您的网络服务器设置是否允许外部连接?您是否已验证您的 Android 设备/模拟器可以连接到服务器?您是否遇到任何异常或错误?这很可能是网络/连接问题。

标签: c# android xamarin soap android-webservice


【解决方案1】:
        //The solution I found was to ignore Microsoft's 
         // tutorial and publish web service to local IIS

                    //change constants.cs

            namespace TodoASMX
                {
                    public static class Constants
                    {
                        // URL of ASMX service
                        public static string SoapUrl
                        {
                            get
                            {
                                var defaultUrl = "http://192.168.254.25/TodoService.asmx";
                                //var defaultUrl = "http://localhost:49178/TodoService.asmx";

                                if (Device.RuntimePlatform == Device.Android)
                                {
                                    // defaultUrl = "http://10.0.2.2:49178/TodoService.asmx";
                                    defaultUrl = "http://192.168.254.25/TodoService.asmx";
                                }

                                //Also in references.cs

                                public TodoService()
                                {
                                    //  this.Url = "http://localhost:49178/TodoService.asmx";
                                    this.Url = "http://192.168.254.25/TodoService.asmx";


                                    // and also in properties window of web reference

                                    //Times like these I really despise Microsoft!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多