![](/img/trans.png)
[英]How can I import schemas required by a WSDL when using XML::Compile::WSDL11?
[英]Adding hook to XML::Compile::WSDL11 to modify WSSE header
我正在使用XML::Compile
套件与SOAP API
使用,该SOAP API
使用WSSE
安全性以及sha1
生成的摘要密码。 不幸的是, XML::Compile::WSS::BasicAuth
使用的密码摘要协议是
sha1_base64(encode utf8 =>“ $ nonce $ created $ password”)。'='
其中$nonce
和$password
是文本值,而$created
是时间戳,而我正在使用的API
使用摘要生成器
sha1_base64($ nonce。$ created.sha1($ password))。'='
我想我可以通过使用钩子重新写入密码来解决此问题,例如
$ wsdl-> addHook(type =>'wsse :: PasswordString',replace => \\&replace_pwd);
由于当前的CPAN
文档没有明确指定挂钩调用语法,因此我依赖于http://grokbase.com/t/sc/xml-compile/1283vscwxz/need-help-with-xml-compile-translate-writer-and-attributes-with-namespace
上模块作者的注释http://grokbase.com/t/sc/xml-compile/1283vscwxz/need-help-with-xml-compile-translate-writer-and-attributes-with-namespace
。 但是,永远不会调用回调函数replace_pwd()
,结果是XML::Compile::WSS::BasicAuth
生成的原始(错误)密码会继续发送。
我该如何工作?
TIA。
最近我遇到了完全相同的问题,最终创建了XML :: Compile :: WSS :: BasicAuth实例,并使用从XML :: Compile :: WSS :: BasicAuth-> prepareWriting复制的代码设置XCWB_login,以生成密码我需要的字符串,并将该BasicAuth实例作为wsse_Security选项传递给XML :: Compile :: Schema-> call。
这真是la脚,但这是我发现使用这些库解决此问题的唯一方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.