xamarin PCL Soap web service



我是Xamarin、C#和SOAP的新手。 我发现了类似的问题,例如这个,尤其是这个。 我有一个在Visual Studio 2017 for Mac上创建的Xamarin PCL项目,我需要使用SOAP Web服务 - WSDL。我
遇到了与我提到的第二个链接相同的问题,当我向 PCL 添加 Web 引用时,框架灰显并设置为 WCF,我无法将其更改为 .Net 2.0。 如果我将Web引用添加到Android和IOS项目,那么我可以更改框架。 我现在不针对Windows应用程序,只针对IOS和Android。 我是否通过尝试将 Web 引用添加到 PCL 来正确执行此操作,或者应该添加到 2 个平台项目中?

一种方法是使用依赖注入,如下所述。

在 PCL 项目中定义接口

public interface ISoapServiceHelper
{
string PerformSyncSoapServiceRequest(string requestXML);
}

在原生 iOS 和 Android 项目中实现接口,如下所示。请求 XML 是 SOAP 服务请求

public string PerformSyncSoapServiceRequest(string requestXML)
{
var ServiceResult = string.Empty;
try
{
HttpWebRequest request = CreateSOAPWebRequest();
XmlDocument SOAPReqBody = createSOAPReqBody(requestXML);
using (Stream stream = request.GetRequestStream())
{
SOAPReqBody.Save(stream);
}
using (WebResponse Serviceres = request.GetResponse())
{
using (StreamReader rd = new StreamReader(Serviceres.GetResponseStream()))
{
ServiceResult = rd.ReadToEnd();
}
}
}
catch (Exception e)
{
throw;
}
return ServiceResult;
}

public HttpWebRequest CreateSOAPWebRequest()
{
HttpWebRequest Req = (HttpWebRequest)WebRequest.Create(@"your_URL");
Req.Headers.Add(@"SOAP:Action");
Req.ContentType = "text/xml;charset="utf-8"";
Req.Accept = "text/xml";
Req.Method = "POST";
Req.Timeout = 20000;
Req.ReadWriteTimeout = 20000;
return Req;
}
XmlDocument createSOAPReqBody(string requestXML)
{
XmlDocument SOAPReqBody = new XmlDocument();
SOAPReqBody.LoadXml(requestXML);
return SOAPReqBody;
}

我正在使用Unity IOC进行依赖注入,它工作正常。

相关内容

  • 没有找到相关文章

最新更新