1

Service Reference成功せずに使用しています:

WebサービスはXMLのみを返します

今、私はそれを行うために生のSOAPメッセージを使用しています:

XmlDocument doc = new XmlDocument();
                doc.Load("Service.xml");

                // create the request to your URL
                Uri wsHost = new Uri("http://www.rrr.net/services/Connect");
                HttpWebRequest request = (HttpWebRequest) WebRequest.Create(wsHost);

                // add the headers
                // the SOAPACtion determines what action the web service should use
                request.Headers.Add("SOAPAction", "act");

                // set the request type
                request.ContentType = "text/xml;charset=\"utf-8\"";
                request.Accept = "text/xml";
                request.Method = "POST";

                // add our body to the request
                Stream stream = request.GetRequestStream();
                doc.Save(stream);
                stream.Close();

                // get the response back
                using( HttpWebResponse response = (HttpWebResponse)request.GetResponse() )
                {
                    Stream dataStream = response.GetResponseStream();
                    StreamReader dataReader = new StreamReader(dataStream); 

                    // Use Linq to read the xml response
                    using (XmlReader reader = XmlReader.Create(dataStream))
                    {

投稿は正しいですが、response常にtext/plain空の結果、応答ヘッダーを表示します。

Headers = {Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/plain
Date: Thu, 06 Sep 2012 15:59:28 GMT

}

SOAPメッセージは、actは関数です。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webService">
  <soapenv:Header/>
  <soapenv:Body>
    <web:act>
      <web:d1>1</web:d1>
      <web:d2>14</web:d2>
    </web:act>
  </soapenv:Body>
</soapenv:Envelope>

私が使用SoapUIしているのは、SoapUIからの生のリクエストです。xmlの結果が返されます。

POST http://www.rrr.net/services/Connect HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Content-Length: 516
Host: www.rrr.net
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

ありがとうございました。

4

2 に答える 2

0

リクエストとサービスインターフェイスの両方でアクションを指定する必要があります。以下に示す属性を使用してインターフェースメンバーにアクション値を設定し、次に使用した方法を使用してリクエストにアクション値を設定できますが、コントラクトで使用したアクション名を指定します。

インターフェイスメンバーの属性

[OperationContract Name="YourActionName"]
[WebInvoke (Method = "POST", UriTemplate = "YourActionName")]
Message YourServiceFunction();

メッセージに対するアクションを指定する1つの方法

Message inputMessage = Message.CreateMessage (MessageVersion.Soap, "YourActionName", reader);
于 2012-09-06T15:52:48.903 に答える
0

SOAP Web サービスでは、アクション/メソッドを指定する必要があります (空ではありません)。必要なアクションがわからない場合は、queryString "?WSDL" を使用して Web サービスを呼び出すことにより、Web サービスの WSDL を確認できます。いえwww.yourSite.com/your/Web/Service/URL?WSDL

于 2012-09-06T15:40:17.023 に答える