呼び出しASP.NET webサービスからのASPを使用SOAPClient
-
09-06-2019 - |
質問
私はASP.NET webserviceとの:
[WebService(Namespace = "http://internalservice.net/messageprocessing")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class ProvisioningService : WebService
{
[WebMethod]
public XmlDocument ProcessMessage(XmlDocument message)
{
// ... do stuff
}
}
私は呼び出しにwebサービスからのASPを使う:
provWSDL = "http://servername:12011/MessageProcessor.asmx?wsdl"
Set service = CreateObject("MSSOAP.SoapClient30")
service.ClientProperty("ServerHTTPRequest") = True
Call service.MSSoapInit(provWSDL)
xmlMessage = "<request><task>....various xml</task></request>"
result = service.ProcessMessage(xmlMessage)
問題は私の出会うが、XMLのProcessMessageの方法では、webサービスの配管はデフォルトの名前空間がいました。すなわちまブレークポイントの設定内ProcessMessage(XmlDocumentメッセージいたように、これまでとは違った:
<request xmlns="http://internalservice.net/messageprocessing">
<task>....various xml</task>
</request>
私ャパケットの線が見える、XMLら送信されるSOAPツールキットとは少し違った意味が送られます。純WSます。のソープツールキットを送る:
<SOAP-ENV:Envelope
xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"
xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<ProcessMessage xmlns="http://internalservice.net/messageprocessing">
<message xmlns:SOAPSDK4="http://internalservice.net/messageprocessing">
<request>
<task>...stuff to do</task>
</request>
</message>
</ProcessMessage>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
します。ネクを送る:
<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>
<ProcessMessage xmlns="http://internalservice.net/messageprocessing">
<message>
<request xmlns="">
<task>...stuff to do</task>
</request>
</message>
</ProcessMessage>
</soap:Body>
</soap:Envelope>
で初めてのASP/石鹸ツールキット呼び出します。NET、webサービスどうかよろしくお願いします全ての匠な技/ソープ-fuを使って引きるもののようです。
そのアイデア?OneソリューションはノックアップCOMの呼び出し可能オブジェクトです。ネプロキシとしており、XML文字列としてparam通話のWS、自分に代わって、キャリーの複雑な仕事をこないます。
解決 3
私は、この:
プのお客様 要求 ノードの持ち直してデフォルトの名前空間から:
<ProcessMessage xmlns="http://internalservice.net/messageprocessing">
追加空のデフォルト名前空間のXMLら送信されるASPトオーバーライドする行動:
xmlMessage = "<request xmlns=''><task>....various xml</task></request>"
他のヒント
Kev,
この溶液になるようにします。
を作成する必要がありますカスタム実装のIHeaderHandlerを創造する適切なツールを提供します。
そのあと一歩一歩はこちら
http://msdn.microsoft.com/en-us/library/ms980699.aspx
編集:いつもご覧いただきましてます。素敵対処するためには、ブックマークこのリンクを問わず:D
ろしければ翻訳をお願いしますへのアクセスサービスコードするだけでなく、消費するお客様。
プの名前空間のXmlDocumentとしての最初の部分の研究"に関するお問合せ
のようなもの:
XmlDocument changeDocumentNamespace(XmlDocument doc, string newNamespace)
{
if (doc.DocumentElement.NamespaceURI.Length > 0)
{
doc.DocumentElement.SetAttribute("xmlns", newNameSpace);
XmlDocument newDoc = new XmlDocument();
newDoc.LoadXml(doc.OuterXml);
return newDoc;
}
else
{
return doc;
}
}
その後:
[WebService(Namespace = "http://internalservice.net/messageprocessing")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class ProvisioningService : WebService
{
[WebMethod]
public XmlDocument ProcessMessage(XmlDocument message)
{
message = changeDocumentNamespace(message,String.Empty);
// Do Stuff...
}
}