在WSO2微集成器REST API中发送纯文本格式JSON请求的问题
在WSO2 Micro-Integrator中复现纯字符串JSON请求体的解决方案
核心问题
你需要发送的请求体是纯字符串形式的JSON(而非键值对结构),但WSO2 Micro-Integrator默认处理逻辑易将请求体转换为键值对格式,导致后端无法识别。以下是具体解决方法:
方法1:直接构造纯字符串请求体
在序列中通过payloadFactory直接生成纯字符串的JSON请求体,同时正确设置请求头:
<sequence xmlns="http://ws.apache.org/ns/synapse" name="GenerateOTPSequence"> <!-- 设置Content-Type和X-Auth请求头 --> <property name="Content-Type" value="application/json" scope="transport"/> <property name="X-Auth" value="C1185D8E3281545AE05502505A|QlhHeWtvYmtFSm84VGVLbUFYTEExOXdyNjE4WGhwYkthVnlTTzBaVnMvQ0FWNFkyMmFMTkhiU0xGVmhGS0pxenNGK2YrVHN0ZVlxYnb29OVGM1U0UyK2VRM3FjamRxMTdWTWpoaXZoWlBVVUdzblZEWmVpRDlMVEhjV2s=" scope="transport"/> <!-- 构造纯字符串JSON请求体 --> <payloadFactory media-type="json"> <format>$1</format> <args> <arg value="923331234567"/> </args> </payloadFactory> <!-- 发送请求到后端 --> <call> <endpoint> <address uri="http://12.34.56.78/generateotp"/> </endpoint> </call> </sequence>
方法2:转发前端原始纯字符串请求
如果是接收前端请求后转发到后端,需禁用WSO2的自动JSON解析,确保原始请求体被完整传递:
<api xmlns="http://ws.apache.org/ns/synapse" name="GenerateOTPAPI" context="/generateotp"> <resource methods="POST"> <inSequence> <!-- 禁用JSON转XML,保留原始请求体 --> <property name="DISABLE_JSON_TO_XML_CONVERSION" value="true" scope="axis2"/> <!-- 传递原始X-Auth头 --> <property name="X-Auth" expression="$trp:X-Auth" scope="transport"/> <!-- 直接转发请求到后端 --> <call> <endpoint> <address uri="http://12.34.56.78/generateotp"/> </endpoint> </call> <respond/> </inSequence> <outSequence/> <faultSequence/> </resource> </api>
验证请求正确性
添加日志查看发送的请求细节,确认格式与curl一致:
<log level="full"/>
检查日志中请求体是否为"923331234567"(符合JSON字符串格式),同时确认Content-Type为application/json、X-Auth头完整。
内容的提问来源于stack exchange,提问作者user1307895
相关产品推荐
相关产品推荐

