如何在xamarin表单应用程序中连接ASMX Webservice

时间:2016-05-20 07:09:11

标签: asmx

我正在使用ASMX webservice开发一个应用程序。我不知道如何连接它。我在这里提到了https://developer.xamarin.com/guides/xamarin-forms/web-services/consuming/asmx。 但我不知道如何做到这一点..请任何人都可以使用ASMX webservice提供简单的应用程序...

1 个答案:

答案 0 :(得分:2)

我将分享我的代码,因为我还需要连接到我的asmx .NET Web服务,并且经过大量的研究并且有些日子在没有运气的情况下尝试了一些事情,最终设法完成了。我看到许多文章解释了其他方法,但这是我发现的最简单的,也是第一个对我有用的文章。

(我正在连接到在调试模式下在另一个Visual Studio中运行的Web服务)

        var httpClient = new HttpClient();
        httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));
        httpClient.DefaultRequestHeaders.Add("SOAPAction", "http://tempuri.org/WSLogin");
        string wUser = "user";
        string wPassword = "password";
        string soapstr = string.Format(@"<?xml version=""1.0"" encoding=""utf-8""?>
                <soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
                  <soap:Body>
                    <WSLogin xmlns=""http://tempuri.org/"">
                      <wUser>{0}</wUser>
                      <wPassword>{1}</wPassword>
                    </WSLogin>
                  </soap:Body>
                </soap:Envelope>", wUser, wPassword);
        var response = httpClient.PostAsync("http://localhost:49411/Default.asmx", new StringContent(soapstr, Encoding.UTF8, "text/xml")).Result;
        var content = response.Content.ReadAsStringAsync().Result;

您只需复制此代码并将其修改为指向您的Web服务URL,并更改函数的名称(在我的情况下是其WSLogin)和参数。或者你可以简单地复制web服务将显示的整个soap xml,如果你在任何浏览器中找到它的asmx文件,然后选择你想要指向的函数。

我读过iOs需要https工作的地方,但我还没有尝试过。它适用于UWP和Android。

希望这会有所帮助,这让我抓狂!)

编辑:您可能需要使用语句

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using Xamarin.Forms;