WSO2微集成器报错:无法从URL推断传输信息的原因排查
问题:WSO2 Micro Integrator发送请求时无法推断传输信息错误
错误信息
Unexpected error during sending message out org.apache.axis2.AxisFault: The system cannot infer the transport information from the 10.184.18.142:31258/api/v1/niPush URL.
处理流程代码
<payloadFactory media-type="json"> <format>{ "executeBatch": { "sessionID": "$1", "commands": [ { "event": "Accepted", "eventParameters": [ { "name": "App_Text", "valueAsString": "$2", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "Offer_Account_Data", "valueAsString": "$3", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "Offer_Account_SMS", "valueAsString": "$4", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "Offer_Account_Voice", "valueAsString": "$5", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "Offer_Allocation_Data", "valueAsString": "$6", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "Offer_Allocation_SMS", "valueAsString": "$7", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "Offer_Allocation_Voice", "valueAsString": "$8", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "Offer_Duration_Data", "valueAsString": "$9", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "Offer_Duration_SMS", "valueAsString": "$10", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "Offer_Duration_Voice", "valueAsString": "$11", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "offer_price", "valueAsString": "$12", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "Payment_Method", "valueAsString": "Airtime,MPESA,Bonga,Okoa", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "Provisioning_Type", "valueAsString": "7.0", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "SMS_Text", "valueAsString": "$13", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "customer_profile", "valueAsString": "1", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "customer_cell_id", "valueAsString": "63902457739896", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "selected_payment_method", "valueAsString": "", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "msisdn", "valueAsString": "$14", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "offerCode", "valueAsString": "$15", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "offerName", "valueAsString": "$2", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "UACIOfferTrackingCode", "valueAsString": "$16", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "mpesa_correl_id", "valueDataType": "string", "valueAsString": "", "valueAsNumeric": 0.0 }, { "name": "mpesa_tunukiwa_callback_url", "valueAsString": "https://172.29.134.86:21013/rest/tunukiwa/MPESA_Fuliza_Callback", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "unica_accept_callback_url", "valueAsString": "https://172.29.134.86:21002/rest/RESTInteractWrapper/executeBatch", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "accountType", "valueAsString": "$17", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "Duration_Category", "valueAsString": "$20", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "expiry", "valueAsString": "$18", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "expiryUnit", "valueAsString": "$19", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "expiryUnitType", "valueAsString": "$20", "valueDataType": "string", "valueAsNumeric": 0.0 }, { "name": "resourceAmount", "valueAsString": "$21", "valueDataType": "string", "valueAsNumeric": 0.0 } ], "methodIdentifier": "ob_postEvent" }, { "methodIdentifier": "endSession" } ] } }</format> <args> <arg evaluator="xml" expression="$ctx:ID"/> <arg evaluator="xml" expression="$ctx:OFFER_NAME"/> <arg evaluator="xml" expression="$ctx:ACCOUNT_TYPE_DATA_ID"/> <arg evaluator="xml" expression="$ctx:ACCOUNT_TYPE_SMS_ID"/> <arg evaluator="xml" expression="$ctx:ACCOUNT_TYPE_VOICE_ID"/> <arg evaluator="xml" expression="$ctx:ACCOUNT_TYPE_DATA_QUANTITY"/> <arg evaluator="xml" expression="$ctx:ACCOUNT_TYPE_SMS_QUANTITY"/> <arg evaluator="xml" expression="$ctx:ACCOUNT_TYPE_VOICE_QUANTITY"/> <arg evaluator="xml" expression="$ctx:ACCOUNT_TYPE_DATA_EXPIRY"/> <arg evaluator="xml" expression="$ctx:ACCOUNT_TYPE_SMS_EXPIRY"/> <arg evaluator="xml" expression="$ctx:ACCOUNT_TYPE_VOICE_EXPIRY"/> <arg evaluator="xml" expression="$ctx:PRICE"/> <arg evaluator="xml" expression="$ctx:SUCCESS_NOTIFICATION"/> <arg evaluator="xml" expression="$ctx:MSISDN"/> <arg evaluator="xml" expression="$ctx:OFFER_CODE"/> <arg evaluator="xml" expression="$ctx:TREATMENT_CODE"/> <arg evaluator="xml" expression="$ctx:ACCOUNT_TYPE"/> <arg evaluator="xml" expression="$ctx:EXPIRY_UNIT"/> <arg evaluator="xml" expression="$ctx:EXPIRY"/> <arg evaluator="xml" expression="$ctx:EXPIRY_UNIT_TYPE"/> <arg evaluator="xml" expression="$ctx:QUANTITY"/> </args> </payloadFactory> <log level="full"> <property expression="$ctx:Msisdn" name="Msisdn"/> <property name="Before calling" value="Ni Push EP"/> </log> <property name="HTTP_METHOD" scope="axis2" type="STRING" value="POST"/> <property action="remove" name="NO_ENTITY_BODY" scope="axis2"/> <property action="remove" name="REST_URL_POSTFIX" scope="axis2"/> <property name="FORCE_POST_PUT_NOBODY" scope="axis2" type="BOOLEAN" value="true"/> <property name="messageType" scope="axis2" type="STRING" value="application/json"/> <header name="accept" scope="transport" value="application/json"/> <property name="ContentType" scope="axis2" type="STRING" value="application/json"/> <call> <endpoint key="NiPush_EP"/> </call>
端点配置代码
<?xml version="1.0" encoding="UTF-8"?> <endpoint name="NiPush_EP" xmlns="http://ws.apache.org/ns/synapse"> <http method="post" uri-template="10.184.18.142:31258/api/v1/niPush"> <timeout> <duration>5000</duration> <responseAction>fault</responseAction> </timeout> <suspendOnFailure> <errorCodes>-1</errorCodes> <initialDuration>0</initialDuration> <progressionFactor>1.0</progressionFactor> <maximumDuration>0</maximumDuration> </suspendOnFailure> <markForSuspension> <errorCodes>-1</errorCodes> <retriesBeforeSuspension>0</retriesBeforeSuspension> </markForSuspension> </http> </endpoint>
问题原因及解决方法
原因
报错的核心是端点URL缺少传输协议(http://或https://)。WSO2 Micro Integrator需要明确的协议来确定使用HTTP还是HTTPS发送请求,没有协议的URL无法让系统推断传输方式,因此抛出该错误。
Postman能正常工作是因为Postman会自动为缺少协议的URL补全默认协议(通常是http://),或者你在Postman中实际输入时包含了协议。
解决方法
修改端点配置中的uri-template,在IP地址前添加http://或https://(根据实际服务的协议选择):
<http method="post" uri-template="http://10.184.18.142:31258/api/v1/niPush">
修改后,WSO2就能明确传输协议,正常发送请求。
内容的提问来源于stack exchange,提问作者Wajih Haider
相关产品推荐
相关产品推荐

