嗯...首先看起来很奇怪的是 barnyr 提到的您的 IP 论点。您得到的响应让我认为您根本没有得到响应(请求被完全忽略,而不仅仅是错误)。因此,某些设置导致他们忽略您的请求。
从 CF9 开始,当我无法使用常规的 webservice java 对象代理存根时,我使用 cfscript 通过 HTTP 执行此类操作。
这是通过 http() 进行的有效 SOAP 调用(因为 .net 到 cf 无法通过常规肥皂通信复杂的对象哈希映射,我求助于此等)。
这是一个 cf 到 .net 服务调用,因此它可能与您相关,因为他们仅使用内置工具来生成他们的 SOAP 服务,而 Axis 1 SOAP 并不完美。特别是,我不得不使用一些额外的设置和标题来获得它,并专门将肥皂动作添加到标题中(通常来自 SOAP 主体信封)。
此外,我正在使用 oasis 安全性,我必须将其塞入信封/体内。
这是您可以根据需要尝试更新的代码(在 cfc 中):
//////////////////////////////////////////////////////////////////////////
// BUILD HTTP REQUEST
//////////////////////////////////////////////////////////////////////////
Local['SoapAction'] = "XYZ.Commercial.Mapping.ServiceContracts/IService/#Arguments.szMethodName#"; // THIS IS CASE SENSITIVE
var oH = new Http();
oH.setMethod('post');
oH.setCharset('utf-8');
oH.setUserAgent('Axis/1.2.1');
oH.setTimeout(30);
oH.setURL(Arguments.szURL);
// INCLUDING THE SOAPACTION AS A HEADER IS SPECIFIC TO XYZ - USUALLY THE OPERATION IS DECIPHERED FROM THE ENVELOPE BODY TAGS - XYS REQUIRES THIS PATHING TO MATCH FOR THE SOAP ACTION HEADER VALUE
oH.addParam(type="HEADER", name="SOAPAction", value='#Local.SoapAction#');
oH.addParam(type="HEADER", name="Content-Type", value='text/xml');
oH.addParam(type="body", value=Arguments.szBody);
///////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// EXECUTE HTTP
Local['rsHttpSend']= oH.send();
// SET RESULTS
Local.nStatusCode = val(Local.rsHttpSend.getPrefix().StatusCode);
Local.szResponse = Local.rsHttpSend.getPrefix().FileContent;
Local.szHeader = Local.rsHttpSend.getPrefix().Header;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
这种方法结合使用 SoapUI 来验证最终的肥皂正文帖子是否有效。所以如果你也能做到这一点,你应该能够使用这个向量。
如果你走得更远,请告诉我。