我想问你如何在WSDL文件的基础上以XML格式生成SOAP请求/响应.目标平台是JVM,因此可以使用多种语言(例如Java,Scala,Groovy,JRuby,Jython等).SOAP请求/响应生成应该完全在XML级别上完成,而不需要任何类生成和类加载(在这种情况下,WSDL2Java,JAXB或类似方法是不合适的).应该使用开源组件以编程方式完成生成.生成技术应该支持document-literal,rpc-encoded和rpc-literal风格,因此生成器应该处理参数的正确编码.请求/响应消息应该是完全填充的 - >即使对于空/空值,也应生成空节点.
长话短说 - >我想以编程方式完成SoapUI IDE中可行的事情.我已经看过不同的Java相关库/框架(SAAJ,WSDL4J)或Ruby(Savon),但我正在努力进一步推动它.
我正在处理的示例Web服务定义(WSDL和XSD)是
stockquote-ws.wsdl和stockquote-schema.xsd.
我想做的是:
SoapMessageGenerator generator = new SoapMessageGenerator("stockquote-ws.wsdl");
String request = generator.generateSoapRequest();
String response = generator.generateSoapResponse();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,请求应如下所示:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:stoc="http://centeractive.com/stockquote.wsdl" xmlns:stoc1="http://centeractive.com/stockquote.xsd">
<soapenv:Header/>
<soapenv:Body>
<stoc:GetLastTradePrice soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<stoc1:TradePriceRequest>
<tickerSymbol xsi:type="xsd:string">?</tickerSymbol>
</stoc1:TradePriceRequest>
</stoc:GetLastTradePrice>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
......而响应应如下所示:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:stoc="http://centeractive.com/stockquote.wsdl" xmlns:stoc1="http://centeractive.com/stockquote.xsd">
<soapenv:Header/>
<soapenv:Body>
<stoc:GetLastTradePriceResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<stoc1:TradePrice>
<price xsi:type="xsd:float">?</price>
</stoc1:TradePrice>
</stoc:GetLastTradePriceResponse>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud) 我必须以POSIX方式实现BASH"set -o pipefail"选项,以便它适用于各种LINUX/UNIX版本.为了解释一下,该选项使用户能够验证所有管道命令的成功执行.启用此选项后,此命令将启用cat app.log | 如果'cat'失败,grep'ERROR'失败,否则'cat'错误被抑制.
所以,我在这里找到了一个非常好的解决方案:http://cfaj.ca/shell/cus-faq-2.html
run() {
j=1
while eval "\${pipestatus_$j+:} false"; do
unset pipestatus_$j
j=$(($j+1))
done
j=1 com= k=1 l=
for a; do
if [ "x$a" = 'x|' ]; then
com="$com { $l "'3>&-
echo "pipestatus_'$j'=$?" >&3
} 4>&- |'
j=$(($j+1)) l=
else
l="$l \"\$$k\""
fi
k=$(($k+1))
done
com="$com $l"' 3>&- >&4 4>&-
echo "pipestatus_'$j'=$?"'
exec 4>&1
eval "$(exec 3>&1; eval "$com")"
exec 4>&-
j=1
while eval "\${pipestatus_$j+:} false"; do
eval "[ \$pipestatus_$j -eq …Run Code Online (Sandbox Code Playgroud) 我有一个angularjs(v 1.2.19)应用程序,它由两个独立的html页面组成(或者实际上这些是两个单独的angularjs应用程序在一个文件夹中):
我在IE 8和9上有一些众所周知的兼容性问题(两者都不支持html5历史API).我的配置包含:$locationProvider.html5Mode(true).hashPrefix('!');
我在应用程序中没有任何路由 - index.html和edit.html可以看作是单独的angularjs应用程序 - 具有单独的angularjs初始化等.
问题看起来像这样:每当我打开链接:http://server/app或者http://server/app/index.html一切正常.
每当我打开链接时:http://server/app/edit.html从ng-click或直接在浏览器中,页面会自动重定向到http://server/#!app/edit.html
如何禁用"hashbang"重定向?Edit.html不是index.html的一部分,因此它应该直接加载,不需要任何index.html重定向和"哈希"路由.
我尝试了下面的代码,但它导致无限循环的重定向...
<!--[if lt IE 10]>
<script>
window.location = window.location.href.replace( /#.*/, "");
</script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
任何帮助赞赏.