2017-07-06 19 views
0

私はXamarinとC#とSOAPを初めて使用しています。 私はthis、特にthisのような同様の質問を見つけました。 Mac用Visual Studio 2017で作成したXamarin PCLプロジェクトがあり、SOAP Webサービス(WSDL)を使用する必要があります。
私が言及した2番目のリンクと同じ問題を抱えています.WebリファレンスをPCLに追加すると、フレームワークがグレー表示され、WCFに設定され、.Net 2.0に変更できなくなります。 AndroidとIOSプロジェクトにWeb参照を追加すると、フレームワークを変更できます。私は今Windowsアプリケーションをターゲットにしていない、IOSとアンドロイドだけです。 Web参照をPCLに追加しようとすると正しく表示されますか、または2つのプラットフォームプロジェクトに追加する必要がありますか?xamarin PCL Soap Webサービス

答えて

0

これを行う1つの方法は、以下に説明する依存性注入を使用することです。

public interface ISoapServiceHelper 
{ 

    string PerformSyncSoapServiceRequest(string requestXML); 
} 

PCLプロジェクトのインターフェイスを定義し、以下のようにネイティブのiOS &のAndroidプロジェクトでのインターフェイスを実装します。 requestXMLは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を使用していますが、正常に動作しています。

関連する問題