我一直在试用SOAPAPIManager3.2.0来为SOAP服务生成REST,并且已经成功地遍历了这些过程。我启用了消息线跟踪,以便查看日志中的请求-响应。我可以看到,正在创建一条格式正确的消息并将其发送到后端服务,但是响应并不像预期的那样。我注意到一些额外的文本(通常是"16e“,如第二行到最后一行)是在XML有效负载之前发送的,因此正在作为有效负载进行处理。我怀疑这是我的问题的原因,但我无法追踪它的来源。
TID: [-1] [] [2021-05-12 15:23:55,792] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "POST /services/services.php HTTP/1.1[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,792] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "Origin: https://api-manager.ug.com:9443[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,792] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "SOAPAction: https://testservices.ug.com/services/services.php/GetAccountBalance_2[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,792] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "activityID: 119801787388364143641044[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,792] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "Accept: application/json[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,792] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "Referer: https://api-manager.ug.com:9443/[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,793] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "testkey: 76d33583-e7f9-42a3-a4ad-d91118f8b043[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,793] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "Accept-Encoding: gzip, deflate, br[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,793] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "Accept-Language: en-US,en;q=0.5[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,793] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "DNT: 1[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,793] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "Content-Type: application/soap+xml[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,793] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "Transfer-Encoding: chunked[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,793] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "Host: testservices.ug.com[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,793] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "Connection: Keep-Alive[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,793] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "User-Agent: Synapse-PT-HttpComponents-NIO[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,793] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,793] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "16e[\r][\n]"
TID: [-1] [] [2021-05-12 15:23:55,794] DEBUG {org.apache.synapse.transport.http.wire} - HTTPS-Sender I/O dispatcher-5 << "<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:web="http://testservices.ug.com/soap/TransactionServices"><soapenv:Body><web:GetAccountBalance_2><AccountNumber>001221131211</AccountNumber><AuthToken>111111</AuthToken></web:GetAccountBalance_2></soapenv:Body></soapenv:Envelope>[\r][\n]"当我使用XML请求并直接调用后端SOAP服务时,我将获得一个成功的响应。你知道这篇文章的责任是什么吗?我需要做些什么来摆脱它?你的帮助将不胜感激。
发布于 2021-05-14 15:32:31
我从https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Transfer-Encoding#directives那里得到了16e的来源
块
数据以一系列块的形式发送。在本例中,内容长度标题被省略,在每个块的开头,您需要以十六进制格式添加当前块的长度,后面是'\r\n‘,然后是块本身,然后是另一个'\r\n’。终止块是一个常规块,但其长度为零为例外。它后面跟着拖车,它由实体头字段(可能是空的)序列组成。
问题原来是内容类型的问题。我发送值"application/soap+ xml“并将其更改为"text/xml”,方法是在/repository/deployment/server/synapse-configs/default/api/中找到的api的xml配置文件中添加下面一行
<property name="ContentType" value="text/xml" scope="axis2" type="STRING"/>这就是让它运转所需的全部条件。
https://stackoverflow.com/questions/67504168
复制相似问题