如何在wso2中设置十六进制的类型并将十六进制转换为字符串
我有这样的源代码如何在wso2中设置十六进制的类型并将十六进制转换为字符串,wso2,hex,Wso2,Hex,我有这样的源代码 <api context="/EtheriumTransaction" name="EtheriumTransaction" xmlns="http://ws.apache.org/ns/synapse"> <resource methods="POST"> <inSequence> <log>
<api context="/EtheriumTransaction" name="EtheriumTransaction" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="POST">
<inSequence>
<log>
<property expression="json-eval($)" name="payload"/>
</log>
<!--
<log>
<property expression="json-eval($.id)" name="idusr"/>
</log>
-->
<!-- Get Value of Json -->
<property expression="json-eval($.id)" name="idusr" scope="default" type="STRING"/>
<property expression="json-eval($.type)" name="types" scope="default" type="STRING"/>
<property expression="json-eval($.from_address)" name="address_from" scope="default" type="STRING"/>
<property expression="json-eval($.to_address)" name="address_to" scope="default" type="STRING"/>
<property expression="json-eval($.amount)" name="amount" scope="default" type="STRING"/>
<!-- Convert Amount will send and fee become hex -->
<script language="js">
var log = mc.getServiceLog();
var amountString = mc.getProperty("amount");
var amountFloat = parseFloat(amountString);
var feeString = "0.1";
var feeFloat = parseFloat(feeString);
var newAmount = amountFloat - feeFloat;
log.info("New Amount : " + newAmount );
var feeHex = ("0x" + feeFloat.toString(16));
var newAmountHex = ("0x"+ newAmount.toString(16));
log.info("New AmountHex : " + newAmountHex + "feeHex" + feeHex );
mc.setProperty("newAmountHexs", newAmountHex);
</script>
<log>
<property name="newAmount_hex" scope="default" type="String" expression="$ctx:newAmountHexs" />
</log>
</inSequence>
<outSequence/>
<faultSequence/>
</resource>
</api>
wso2有时行为怪异,但要在属性中获取值,需要在值的末尾添加.toString(),将其设置为属性
mc.setProperty("newAmountHexs", newAmountHex.toString());
这对我很有用:)还有一件事。要将浮点转换为十六进制,可以使用:var newAmountHex=java.lang.float.tohextString(newAmount)
mc.setProperty("newAmountHexs", newAmountHex.toString());