2009-07-16 9 views
3

まず、これはここのWebサービスに関する私の3番目の質問です。私は私を助けてくれたguyzに非常に感謝しています。しかし、何かが欠けています。これは正しくありません。 ここに私はすでに得たコードです鉱山Webサービスクラシックasp

Set oXmlHTTP = CreateObject("Microsoft.XMLHTTP") 
oXmlHTTP.Open "POST", "http://www.oursite.com/WebServices/ourService.asmx?WSDL", False 

oXmlHTTP.setRequestHeader "Content-Type", "application/soap+xml; charset=utf-8" 
oXmlHTTP.setRequestHeader "SOAPAction", "http://ourNameSpace/ourFunction" 

SOAPRequest = _ 
    "<?xml version=""1.0"" encoding=""utf-8""?>" &_ 
    "<soap12:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap12=""http://www.w3.org/2003/05/soap-envelope"">" &_ 
    "<soap12:Body>" &_ 
     "<ourFunction xmlns=""http://ourNameSpace/"">" &_ 
     "<var1>" & Session("userid") & "</var1>" &_ 
     "<var2>" & Session("internetid") & "</var2>" &_ 
     "</ourFunction>" &_ 
    "</soap12:Body>" &_ 
    "</soap12:Envelope>" 

oXmlHTTP.send SOAPRequest 

の質問から今私のウェブサービスリンクは

http://buergerserviceschul.niedersachsen.de/modules/id/public/webservice/V4_00/rpc_lit/?wsdl 

私はすべての詳細と必要なすべてのものを提供するWebサービスの呼び出しを与えるときは、まだ私が取得することはできませんよですこの手順からの何らかの入力は不満ですing。 は、私は古い方法を使用する場合、私は再び私

Set oSOAP = Server.CreateObject("MSSOAP.SoapClient30") 
oSOAP.ClientProperty("ServerHTTPRequest") = True 

が今こうして私は、少なくともセッションIDを取得する、すなわち、SOAPクライアントを使用した実装しないことを示唆していたがされている間、私は、何も、私が手に空の応答を取得しないことを意味します私は関数を呼び出し、戻りでXMLを取得する必要がありますが、私はどちらか私は呼び出していますどのようにリターン

には何も得ていないのです、私はこの問題で

を立ち往生していますのでまいら、でもこの手順を使用している場合、さらに に行くことができませんでしたこのサービスは応答しないようにしますが、そうであればgiv私がコードで間違いを犯すと、エラーが発生します。

この点で親切に私を助けてください。 私はこの恩恵のためにあなたに非常に感謝します。 ありがとう

答えて

2

「?WSDL」は使用しないでください。これは、WSDLを取得する目的のためだけです。

また、VBSCRIPTでも XMLを文字列連結で構築しないでください。常にXML APIを使用してXMLを作成します。


私は、まだClassic ASPを使用している多くの人がほとんど選択肢がないことを認識しています。 (*)しかし、誰かが(おそらくあなたも)維持しなければならないVBSCRIPTをもっと書かない機会を歓迎すべきです。代わりに、WebサービスをCOMオブジェクトとして公開するために、C#コードの小さな部分を記述します。通常の「Add Service Reference」テクニックを使用しますが、VBSCRIPTはこれを通常のCOMオブジェクトとして見ます。私は例を見つけることができるかどうかを見ていきます。


(*)私たちは「安っぽい臭い、ASP」と呼ん開始した場合たぶん、管理がより迅速にそれを取り除くのでしょうか?しかし、そうでないかもしれないし、私たちはその名前に執着するだろう。

+0

+1 Webサービスコールを実行するために別のライブラリを呼び出すための+1。 –

0

"http://www.oursite.com/WebServices/ourService.asmx?WSDL"

を置き換え、代わりに、 "?WSDL" を使用していない、示されているようにVBScriptでこれを行うには、C#dllを使用して作業を行い、ASPで消費するCOMインタフェースを公開します。

しかし、あなたが調べるかもしれないいくつかの事柄。まず、Microsoft.XMLHTTPを使用しないでください。スレッドセーフではありません。代わりにCreateObject("MSXML2.ServerXMLHTTP")を使用してください。

何がうまくいかないのかを診断するには、Fiddlerを使用してください。 SOAPスタートアップ・フィドラーを使用する場合は、コマンド・ラインで

ProxyCfg -u 

を発行してください。あなたは、フィドラーのサーバー間の正確な会話を見るでしょう。このSOAPインターフェイスの別の例が正しく動作している場合は、fiddlerを使用してHTTPセッションを調べます。

新しいコードに切り替えて、それによって生成されるリクエストを調べます。このデータから、ヘッダーとXMLを変更する必要があるかどうかを判断できるはずです。

はシオマネキを閉じる前に

Proxycfg -d 

を発行することを忘れないでください。

+0

ヘイ・ガイズ、asmxファイルを持っていません 私はURLを与えました もし私がwsdlを削除したら、それは実行されません – chsab420

関連する問題