4

Windows Phone 8 アプリで Web サービス (WSDL) を使用する必要がありますが、VS2012 では機能しません。

例えば ​​:

http://chennaiemergency.co.in/sree/s2.php?wsdl

  1. プロジェクトを右クリック > サービス参照の追加
  2. アドレステキストボックスに URL を貼り付けます
  3. 「行く」ボタンをクリック
  4. サービスはすべての操作で表示されます
  5. 「OK」をクリック

サービスは追加されましたが、reference.cs に自分の操作に関する情報がありません...

私の wsdl を使用する他の方法はありますか?

4

1 に答える 1

4

この問題に対して私が見つけた最善の方法は、SOAP リクエストを手動で送信することです。SOAP と wsdl は WP とあまり互換性がありません。選択肢がある場合は、Web サービスに WCF を選択してください。Windows フォーム アプリケーションでの SOAP 要求の私のコード (WP プロジェクトでは、非同期メソッドを使用する必要があります -> beginGetRequestStream() & beginGetResponse() 。これに関する msdn には多くのドキュメントがあります):

        // Building of my XML 
        XNamespace env = "http://schemas.xmlsoap.org/soap/envelope/";
        XNamespace xsd = "http://www.w3.org/2001/XMLSchema";
        XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
        XNamespace enc = "http://schemas.xmlsoap.org/soap/encoding/";
        XNamespace typens = "urn:...";
        XNamespace xsiType = "xsd:string";
        XElement soapEnv = new XElement(env + "Envelope",
            new XAttribute(XNamespace.Xmlns + "SOAP-ENV",env.NamespaceName),
            new XAttribute(XNamespace.Xmlns + "xsd", xsd.NamespaceName),
            new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName),
            new XElement(env + "Body",
                new XAttribute(env + "encodingStyle",enc.NamespaceName),
                    new XElement(typens + "MethodName",
                        new XAttribute(XNamespace.Xmlns + "typens",typens.NamespaceName),
                        new XElement("elementName",
                            new XAttribute(xsi + "type",xsiType.NamespaceName), "...value"),
                        new XElement("elementName",
                            new XAttribute(xsi + "type",xsiType.NamespaceName),"...value"),
                        new XElement("elementName",
                            new XAttribute(xsi + "type",xsiType.NamespaceName),"...value")
        )));

        // HTTPWEBREQUEST
        HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("...url...");
        webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        webRequest.Method = "POST";
        webRequest.KeepAlive = false;
        webRequest.ContentType = "text/xml; charset=utf-8";
        webRequest.CookieContainer = new CookieContainer();

        webRequest.Headers.Add("SOAPAction", "...webservice link...");
        webRequest.ProtocolVersion = new Version(1,1);
        webRequest.Timeout = 1000;


        using (StreamWriter stream = new StreamWriter(webRequest.GetRequestStream()))
        { 
            stream.Write(soapEnv); 
            stream.Flush();
            stream.Close();            
        }


        using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
        {
            using (StreamReader responseReader = new StreamReader(webResponse.GetResponseStream()))
            {
                if (responseReader != null)
                {
                    .....code....
                    webResponse.Close();
                }
            }            
        }
于 2013-02-06T09:24:03.270 に答える