2009-04-14 12 views
0

私はSOAPを使ってWebサービスと通信し、エラーを取得しようとしています。この特定の問題について不満は、Webサービスのローカルコピー(はい、私はファイアウォールをオフにしようとした)と完全に正常に動作し、webserviceとクライアントの以前のバージョンで正常に動作するために使用されます。私は(私はこれを行う方法を調べる必要がありますが)クライアントが送信しているものにアクションパラメータを追加することができたと思う。しかし、なぜそれが以前には1つなしで動くことができたのか、非常に不思議です。Soap Post Fail

編集明確化:私は関連するコードは、私はプログラムの旧バージョンと照合し、同じ問題を抱えていたし、関連するコードだったので(それが動作を停止したときに、それが働いていたときとの間で同じだったと思う私が何か微妙なことを逃していない限り)。 I ローカルサーバーでのみ動作しますが、実際のサーバープログラムはローカルコピーとリモートコピーの両方で同じです。私はそれが機能するように変更することができる奇妙な構成設定のいくつかの並べ替えがあると思う。

エラーメッセージ:「有効なアクションパラメータなしでリクエストを処理するためのSoap:ClientUnable。有効なSOAPアクションを提供してください。」

VBクライアントコード

'WEB_SERVICE_URL_CONST = http://site.com/foo.asmx 
'domDoc.xml = <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><TestConnection xmlns="http://site.com"/></soap:Body></soap:Envelope> 

Dim oXml As New XMLHTTPRequest 
oXml.Open "POST", WEB_SERVICE_URL_CONST, False, "\" 
oXml.setRequestHeader "Content-Type", "text/xml" 
oXml.send domDoc.xml 

C#サーバーコード

[WebMethod] 
     public int TestConnection() 
     { 
      return 1; 
     } 

答えて

0

問題はxmlns="http://site.com"コードで発生しました。私がローカルでテストしたとき、私は間違ってxmlns="http://localhost"を使っていました。実際には、テストする場所に関係なく、クライアントまたはサーバー(サーバー内のこれはWebService(Namespace =...))に変更しないでください。ただし、変更された場合、クライアントとサーバーは一致する必要があります。

0

あなたが最初の2行は、実際のバージョンでは、コメントアウトされていませんか?サンプルコードはWEB_SERVICE_URL_CONSTとdomDoc.xmlに値がないようですが、空のSOAP要求は実際に何もアクションを指定しませんでしたか?

編集:私は、以前のバージョンのWebサービスとクライアントでうまく動作していましたが、ちょっと混乱しています。実際にクライアントとサーバーの両方を変更した場合、どの部分が変更されませんでしたか?

+0

コメントアウトされた行は、実際のバージョンには存在しません。サンプルコードが提供しないコンテキストを提供するために追加された行です。私は値が実行時にあったと言ったものであることを確認しましたが、両方の場所のURLは偽物です。 – Brian