WSO2 ESB:将 JSON 提交到代理服务时出现意外字符错误

2023-11-23

我正在尝试使用 WSO2 ESB 4.9.0 中的 WSO2 Facebook 连接器从 Facebook 检索数据。我在下面提供了代理配置。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="facebook_getFeed"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence onError="fault">
         <property name="messageType" value="application/json" scope="axis2"/>
         <log level="full"/>
         <property name="apiUrl" expression="json-eval($.apiUrl)"/>
         <property name="apiVersion" expression="json-eval($.apiVersion)"/>
         <property name="accessToken" expression="json-eval($.accessToken)"/>
         <property name="userId" expression="json-eval($.userId)"/>
         <property name="numOfFeeds" expression="json-eval($.numOfFeeds)"/>
         <property name="fields" expression="json-eval($.fields)"/>
         <facebook.init>
            <apiUrl>{$ctx:apiUrl}</apiUrl>
            <accessToken>{$ctx:accessToken}</accessToken>
            <apiVersion>{$ctx:apiVersion}</apiVersion>
         </facebook.init>
         <facebook.getFeeds>
            <userId>{$ctx:userId}</userId>
            <numOfFeeds>{$ctx:numOfFeeds}</numOfFeeds>
            <fields>{$ctx:fields}</fields>
         </facebook.getFeeds>
         <respond/>
      </inSequence>
      <outSequence>
         <property name="messageType" value="application/json" scope="axis2"/>
         <send/>
      </outSequence>
   </target>
   <description/>
</proxy> 

我遇到的问题是,每当我向服务发出 POST 请求时,就会超时。检查 ESB 错误日志,似乎存在“构建直通流时出错”。

[2015-12-15 15:16:54,284] ERROR - RelayUtils Error while building Passthrough stream
org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'
 at [row,col {unknown-source}]: [1,1]
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296)
        at org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566)
        at org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:149)
        at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:133)
        at org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:98)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48)
        at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:149)
        at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:185)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
        at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:317)
        at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:363)
        at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:142)
        at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'
 at [row,col {unknown-source}]: [1,1]
        at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:639)
        at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2052)
        at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1134)
        at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225)
        at org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:34)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)
        ... 18 more
[2015-12-15 15:16:54,377] ERROR - SequenceMediator Error while building message
org.apache.axis2.AxisFault: Error while building Passthrough stream
        at org.apache.synapse.transport.passthru.util.RelayUtils.handleException(RelayUtils.java:283)
        at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:142)
        at org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:98)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48)
        at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:149)
        at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:185)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
        at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:317)
        at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:363)
        at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:142)
        at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'
 at [row,col {unknown-source}]: [1,1]
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296)
        at org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566)
        at org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:149)
        at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:133)
        ... 13 more

参考上面的代理配置,我有一个日志中介器,它实际上成功地打印了 JSON 有效负载,所以这会让我认为它与消息格式化程序有关?

我的 Axis2.xml 文件中的消息格式化程序/生成器配置如下:

<!--JSON Message Formatters-->
<messageFormatter contentType="application/json" class="org.apache.synapse.commons.json.JsonStreamFormatter"/>

<!--JSON Message Builders-->
<messageBuilder contentType="application/json" class="org.apache.synapse.commons.json.JsonStreamBuilder"/>

该文件中的其他所有内容均按照默认配置。

这里可能出了什么问题?

样品请求

使用 Soap UI(有效负载中隐藏的 IP 和访问令牌):

POST http://[SERVER_IP]:8280/services/facebook_getFeed <br>
HTTP/1.1 <br>
Accept-Encoding: gzip,deflate <br>
Content-Type: application/json <br>
Content-Length: 207 <br>
Host: [SERVER_IP]:8280 <br>
Connection: Keep-Alive <br>
User-Agent: Apache-HttpClient/4.1.1 (java 1.5) <br>

有效负载数据:

{
"apiUrl":"https://graph.facebook.com",
"apiVersion":"v2.4",
"accessToken":"[TOKEN HERE]",
"userId":"409521282507981",
"numOfFeeds":"10",
"fields":"message,id,created_time"
}

电线日志

根据@RavindraRanwala 的要求:

[2015-12-15 17:29:38,650] DEBUG - wire >> "POST /services/facebook_getFeed HTTP/1.1[\r][\n]"
[2015-12-15 17:29:38,652] DEBUG - wire >> "Accept-Encoding: gzip,deflate[\r][\n]"
[2015-12-15 17:29:38,653] DEBUG - wire >> "Content-Type: application/json[\r][\n]"
[2015-12-15 17:29:38,653] DEBUG - wire >> "Content-Length: 207[\r][\n]"
[2015-12-15 17:29:38,663] DEBUG - wire >> "Host: [SERVER_IP]:8280[\r][\n]"
[2015-12-15 17:29:38,663] DEBUG - wire >> "Connection: Keep-Alive[\r][\n]"
[2015-12-15 17:29:38,664] DEBUG - wire >> "User-Agent: Apache-HttpClient/4.1.1 (java 1.5)[\r][\n]"
[2015-12-15 17:29:38,665] DEBUG - wire >> "[\r][\n]"
[2015-12-15 17:29:38,666] DEBUG - wire >> "{[\n]"
[2015-12-15 17:29:38,666] DEBUG - wire >> ""apiUrl":"https://graph.facebook.com",[\n]"
[2015-12-15 17:29:38,667] DEBUG - wire >> ""apiVersion":"v2.4",[\n]"
[2015-12-15 17:29:38,668] DEBUG - wire >> ""accessToken":"[ACCESS_TOKEN]",[\n]"
[2015-12-15 17:29:38,669] DEBUG - wire >> ""userId":"409521282507981",[\n]"
[2015-12-15 17:29:38,669] DEBUG - wire >> ""numOfFeeds":"10",[\n]"
[2015-12-15 17:29:38,679] DEBUG - wire >> ""fields":"message,id,created_time"[\n]"
[2015-12-15 17:29:38,679] DEBUG - wire >> "}"
[2015-12-15 17:29:38,812]  INFO - LogMediator To: /services/facebook_getFeed, MessageID: urn:uuid:27814841-6067-466c-b55f-b7fdd67c8d3b, Direction: request, Payload: {
"apiUrl":"https://graph.facebook.com",
"apiVersion":"v2.4",
"accessToken":"[ACCESS_TOKEN]",
"userId":"409521282507981",
"numOfFeeds":"10",
"fields":"message,id,created_time"
}
[2015-12-15 17:29:38,909]  INFO - TimeoutHandler This engine will expire all callbacks after : 120 seconds, irrespective of the timeout action, after the specified or optional timeout
[2015-12-15 17:29:40,267] DEBUG - wire << "GET /409521282507981/feed?limit=10&access_token=[ACCESS_TOKEN]&fields= HTTP/1.1[\r][\n]"
[2015-12-15 17:29:40,269] DEBUG - wire << "Accept-Encoding: gzip,deflate[\r][\n]"
[2015-12-15 17:29:40,278] DEBUG - wire << "Content-Type: application/json[\r][\n]"
[2015-12-15 17:29:40,279] DEBUG - wire << "Host: graph.facebook.com:443[\r][\n]"
[2015-12-15 17:29:40,280] DEBUG - wire << "Connection: Keep-Alive[\r][\n]"
[2015-12-15 17:29:40,281] DEBUG - wire << "User-Agent: Synapse-PT-HttpComponents-NIO[\r][\n]"
[2015-12-15 17:29:40,281] DEBUG - wire << "[\r][\n]"
[2015-12-15 17:29:40,554] DEBUG - wire >> "HTTP/1.1 200 OK[\r][\n]"
[2015-12-15 17:29:40,557] DEBUG - wire >> "Access-Control-Allow-Origin: *[\r][\n]"
[2015-12-15 17:29:40,558] DEBUG - wire >> "Content-Type: text/javascript; charset=UTF-8[\r][\n]"
[2015-12-15 17:29:40,559] DEBUG - wire >> "X-FB-Trace-ID: E5Iewv3ixeR[\r][\n]"
[2015-12-15 17:29:40,560] DEBUG - wire >> "X-FB-Rev: 2091546[\r][\n]"
[2015-12-15 17:29:40,561] DEBUG - wire >> "ETag: "ca13846784e4a3383090ca79b7a295fd23aa5641"[\r][\n]"
[2015-12-15 17:29:40,561] DEBUG - wire >> "Pragma: no-cache[\r][\n]"
[2015-12-15 17:29:40,562] DEBUG - wire >> "Cache-Control: private, no-cache, no-store, must-revalidate[\r][\n]"
[2015-12-15 17:29:40,563] DEBUG - wire >> "Facebook-API-Version: v2.5[\r][\n]"
[2015-12-15 17:29:40,563] DEBUG - wire >> "Expires: Sat, 01 Jan 2000 00:00:00 GMT[\r][\n]"
[2015-12-15 17:29:40,564] DEBUG - wire >> "Vary: Accept-Encoding[\r][\n]"
[2015-12-15 17:29:40,565] DEBUG - wire >> "Content-Encoding: gzip[\r][\n]"
[2015-12-15 17:29:40,565] DEBUG - wire >> "X-FB-Debug: G+b1bsKrSFxPDc4u1RDGIpHACsTbiJV6n1nGgNfMYwc0IqGO2fif1pnr9/o/dhQ1DLSpl7pXheknjzMwvH948w==[\r][\n]"
[2015-12-15 17:29:40,575] DEBUG - wire >> "Date: Tue, 15 Dec 2015 06:29:46 GMT[\r][\n]"
[2015-12-15 17:29:40,576] DEBUG - wire >> "Connection: keep-alive[\r][\n]"
[2015-12-15 17:29:40,578] DEBUG - wire >> "Content-Length: 814[\r][\n]"
[2015-12-15 17:29:40,579] DEBUG - wire >> "[\r][\n]"
[2015-12-15 17:29:40,580] DEBUG - wire >> "[0x1f][0x8b][0x8][0x0][0x0][0x0][0x0][0x0][0x0][0x3][0xad][0x93][0xef]o[0xa3]6[0x18][0xc7][0xff][0x15][0xc4][0x8b]J[0xd3]z[0x89]⌂[0x3][0x96][0xaa][0x89]$M[0xbb][0xb4][0xd7]6[0x97]\[0xda][0xb0]L[0x91]K[0x1c]B![0x98][0x82][0x9][0xcd]z[0xfd][0xdf]g[0xba]{Q[0xe5][0xa6]p[0x9a][0x6][0xbc][0xb0][0x85][0xad][0xcf][0xd7][0x1f]?[0xcf][0xab][0xbd][0x12]Z[0xd8][0xfc][0x8f]W{+[0xcb]RD[0xd2][0xe6][0xf6
3][0x97][0x96][0xf9][0x84]u[0xa5]D*,[0xfe][0x8b]}j[0x87][0x85][0x14]Z[0xae][0x96]:[0xde]6k[0x10][0x80][0xf8][0x13][0x84][0x9f][0x90];[0x5][0x88][0x3][0xc8][0xb1][0xfb]+0[0x8f]Y[0x19][0xaf][0xcc]⌂[0x2]<[0x8a] r[0x11][0x5][0x8e][0xe7][0xc2]%[0xc4].t[0x10]c[0x18][0x1][0x87]B[0x97][0xd8]o[0xa7][0x1f][0x91][0x13][0xb5][0x95]z[0x13]gQ[0xc3][0xad][0xb]e[0x6][0x1b]Y[0xc8][0xce]q0[0xe0][0x80]q[0xe0][0x1d][0x5][0x13][0x88] c[0x84][0xb9][0x1
][0x10]y[0x7][0xdc]QUjK[0xcb]R7[0xe8]T[0x85]B[0xc7]*[0xb3]D$[0xe2][0xac][0xd3]9Fw[0xa6][0x8]sJ8[0xa6][0xed]t[0xc]IC'[0xc][0x1e][0xd0][0xef][\n]"
[2015-12-15 17:29:40,592] DEBUG - wire >> "[0xa9][0xf5][0xde]*k)[0xb5][0x95][0xa7]"[0x94][0x96]V[0xd6]F[0xec][0xa4][0x95]VY[0xb8]i[\r][0x80][0x10][0x87][0xc7][0xbd]7[0x1](1/u[0xcc][0xdc]=[0x8][0xf0][0xbb]U[0x8b][0xd2]j[0xc4]'[0x8d][0x0][0xf1][0xa8]*[0xdd]L[0xcb][0xf].B][0x89]4[0xdd][0xb7]E[0x81][0x88]#[0xa7]5[\n]"
[2015-12-15 17:29:40,595] DEBUG - wire >> "![0xd8]3Q<[0x0][0xf0]A[0x94][0xdb][0x8d]%[0xb2][0x95][0xb5][0x15][0xfb]Gy[0x18][0xc1][0x94][0x84]L[0xd3][0x9f][0xb8][0x10]@9[0x81][0xad]!0[0x81][0xc]![0xc2][0x98]w[0x18][0xc2]7[0x9][0xc2][0x8d][0xc][0x13][0xeb][0x7][0x11][0xc7][0xd1][0x88]c[0xc2]I{-[0x98]6[0xf0]L-P[0xec][0xb2][0x1f][0xce]⌂[0xfa].@[0xa4][0xa5]2[0x3][0xa5]M[0xfd][[0xb9]2[0xe5][0xb9].[0xd4][0xd6]d[0x91]VU[0xca][0xa2]E[0x81][
0x4][0x8f][0xa3]v[0x5]f[\n]"
[2015-12-15 17:29:40,596] DEBUG - wire >> ")uMq[0x1e][0xd6][0xa4][0xff][0x1]*[0xde][0x91]mD[0xe0]p[0xc4]Z[0x89][0xc0][0x81][0xa0]!:[0x18][0x1d][0x12][0x9b]S[0xff]T[0xc7]AN[0xcd][0xd7][0xde][0xef][0x0]3dX[0x18][0xb8][0xc0]~[0xfb][0xf3][0xd4][0xce]Ed[0xca][0xdb][0xe6][0xaf]v^[0xc8]][0xac][0xaa][0xd2]l[0xdc]h[0x9d][0x97]|[0xd1]]t[0xa3]B[0xe4][0x9b][0xce][0xda][0xb4][0xdf][0xa3]RI'T[n[0xea]t[0xd1][0xdd][0xa1][0xe]]t[0xf][0x0][0x8b][0x
xca][0xd5]oi[0xbc][0x8d][0xf5][0x19][0x4]'e[0x9c][0x85][0xf2][0xcc][0xdc]+e[0xc0],uOD[0x18][0x9a][0xa3]-[0xb5]Jdv[0x6][0x1d][0xe8]0[0x8][0x8c]l[0x88][0x18]`[0xee][0xb7]Y[0xaa][0xcb][0xde]6z[0xca][0xa6][0x18][0xe6]j[0xb6][0xbf][0xf4][0x96]U[0x8][0x7][0xe]B[0xf5][0xc9]r[0xf9]O[0xd0][0xef]{e[0x16].[0xfd][0x95]?N@[0x8][0x8a]z[0x94][0x8c][0xb0]?q[0x82][0xde][0xa4][0x1e]^[0x87][0xec]9[0xae]f~[0x92]D[0x14][0xf5]\[0x15][0xf4][0xcb]"[0xbc]
]d=[0xbc]x[0x92][0xee]\&[0xdb][0xfb]r[0xf0][0xbc]&[0x81]/[0xf4]|[0x15][0x5][0xfe][0xe7]/[0x8f][0xf1][0x1d]<⌂[0xa9][0xf7]+_EW[0x15]c[0x13]W[0xcb]$y[0xbe][0x9a]{[0xeb][0x9b][0x88][0xc2]r[0x1a][0xf4][0xf2][0xcf][0xf7][0xa3]][0x1d][0xc][0x82]A[0x13][0xe5][0xbb][0xa9]3hLg[0xf2]E[0xff]⌂[0xca][0xfe][0xbb][0xa1]*[0xd3]q[0xfa].[0x9b][0x9a].[0x82][0xde][0xbf]+[0x1b][0xf4][0xc7][0xf2][0xe6]|>[0xc3]t|[[0x8f]]q3[0x8c][0xf1][0xae][0x9f][0x93][0
xe8]k[0x8c]/[0xef][0xee]f[0xe7][0xc9][0xa4][0xbe][0x8c][0x3]?[0xbd][0xdf][0xe5]_[0xfb]/[0xfb][0xb1][0x1f][0xf4][0xc9]5[0xb9][0x9e][0x5]f0[0xdd][0x8f]Y[0xe0][0xc3][0xc9][0xee]<{[0xc8].[0xd4]z>[0xa4]^[0xc8]*⌂=[0x99][0xc6][0xf][0x4][0xdc]#:q[0x9d][0xa2][0xff][0xc4]n[0x91][0xfc][0xcb][0x1b]^[0xd4][0xf]Q[0xa3][0xcc]~{[0xfb][0x1b][0x92][0x12][0xdf])M[0x7][0x0][0x0]"
[2015-12-15 17:29:40,674] ERROR - RelayUtils Error while building Passthrough stream
org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'
 at [row,col {unknown-source}]: [1,1]
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296)
        at org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566)
        at org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:149)
        at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:133)
        at org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:98)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72)
        at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:154)
        at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:267)
        at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.mediateFromContinuationStateStack(Axis2SynapseEnvironment.java:679)
        at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:244)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:529)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:172)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
        at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:247)
        at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'
 at [row,col {unknown-source}]: [1,1]
        at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:639)
        at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2052)
        at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1134)
        at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225)
        at org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:34)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)
        ... 19 more
[2015-12-15 17:29:40,902] ERROR - TemplateMediator Error while building message
org.apache.axis2.AxisFault: Error while building Passthrough stream
        at org.apache.synapse.transport.passthru.util.RelayUtils.handleException(RelayUtils.java:283)
        at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:142)
        at org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:98)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72)
        at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:154)
        at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:267)
        at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.mediateFromContinuationStateStack(Axis2SynapseEnvironment.java:679)
        at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:244)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:529)
        at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:172)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
        at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:247)
        at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'
 at [row,col {unknown-source}]: [1,1]
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296)
        at org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566)
        at org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:149)
        at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:133)
        ... 14 more
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'
 at [row,col {unknown-source}]: [1,1]
        at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:639)
        at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2052)
        at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1134)
        at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225)
        at org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:34)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)
        ... 19 more
[2015-12-15 17:29:40,991] ERROR - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:85e6d771-e7c6-4764-8431-01e0fb4782e6, Direction: request, MESSAGE = Executing default 'fault' sequence, ERROR_CODE = 0, ERROR_MESSAGE = Error while building message, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
nv:Body/></soapenv:Envelope>

Answer recommended by WSO2 Collective

非常感谢@RavindraRanwala 和@ThusithaThilinaDayaratne 引导我解决了这个问题。

查阅线路日志后,Facebook API 似乎正在以文本/javascript 内容类型进行响应。我没有在 ESB 中启用消息生成器/格式化程序来处理此内容类型,因此该过程最终失败。我所需要做的就是打开我的轴2.xml配置文件并附加以下消息构建器:

<!--JSON Message Builders-->
<messageBuilder contentType="application/json" class="org.apache.synapse.commons.json.JsonStreamBuilder"/>
<messageBuilder contentType="text/javascript" class="org.apache.synapse.commons.json.JsonStreamBuilder"/>

...和格式化程序:

<!--JSON Message Formatters-->
<messageFormatter contentType="application/json" class="org.apache.synapse.commons.json.JsonStreamFormatter"/>
<messageFormatter contentType="text/javascript" class="org.apache.synapse.commons.json.JsonStreamFormatter"/>

Facebook 连接器上的最新文档似乎位于 GitHub 页面,其中澄清了所有必要的构建器/格式化程序信息:

https://github.com/wso2/esb-connectors/tree/master/facebook/facebook-connector/facebook-connector-1.0.0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WSO2 ESB:将 JSON 提交到代理服务时出现意外字符错误 的相关文章

随机推荐

  • hibernate @ManyToMany 双向急切获取

    我有一个我认为应该很常见的问题 但我找不到答案 我有 2 个对象 组和用户 我的课程看起来像这样 class Group ManyToMany fetch FetchType EAGER List
  • 使用 Rcpp 在 R 包中添加外部库

    我正在尝试开发一个 R 包 它使用Sundials用于求解微分方程的 C 库 为了不让用户安装该库 我将该库的源代码放在我的包中 我已将库中的所有头文件放入 inst include sundials 2 6 2和 c文件在src sund
  • 如何使用 QTextEdit 结束行

    我正在尝试创建QTextEdit有一些文本 在这段文本中我有行尾字符 n 但它不被接受QTextEdit对象 整个文本显示 没有任何中断 有什么理由吗 如果您使用的是 Qt 4 3 或更高版本 那么您可以使用 您可以使用以下命令关闭富文本编
  • 如何创建 dotnet core 单个可执行文件

    我想将我的 dotnet core 项目配置为编译为单个可执行文件 该项目与使用生成的项目类似dotnet new version 1 0 0 buildOptions debugType portable emitEntryPoint t
  • 为什么使用 QuantifiedConstraints 指定类型类的子类还需要子类的实例?

    我正在尝试多种无标签编码Free LANGUAGE PolyKinds LANGUAGE TypeSynonymInstances LANGUAGE TypeFamilies LANGUAGE Rank2Types LANGUAGE Fle
  • 如何从文本输入将锚标记添加到 URL

    我希望能够在评论字段中获取用户输入的文本并检查 URL 类型表达式 如果存在 则在显示评论时添加锚标记 到 url 我在服务器端使用 PHP 在客户端使用 Javascript 带有 jQ uery 所以我应该等到 URL 显示之前才检查它
  • 对 XML 模式进行版本控制的最佳实践是什么?

    我经常需要为不同的基于 XML 的导入例程设计 XML 模式 很明显 XML 模式会随着时间的推移而发展 或者它们可能包含需要修复的错误 因此捕获模式的版本并拥有某种机制来绑定特定版本非常重要 目前我有两种情况 该错误是在架构中发现的 并且
  • 将 2D 数组组合到 3D 数组

    你好 我有 3 个 numpy 数组 如下所示 gt gt gt print A 1 0 0 3 0 0 5 2 0 2 0 0 1 2 1 gt gt gt print B 5 9 9 37 8 9 49 8 3 3 3 1 4 4 5
  • 确定浮动元素中的换行位置

    假设我有六个 div 容器内的元素 div 这六个 div 中的每一个都是一个正方形并且具有 CSS 样式float left应用 默认情况下 当它们到达容器的边缘时 div 他们会包裹起来 现在 我的问题是 使用Javascript 是否
  • 实现可扩展性的最佳数据访问范例是什么?

    微软提供了许多不同的数据访问选项 哪一种最适合可扩展的应用程序 Linq 我们应该使用 Linq 吗 这看起来确实很简单 但如果您了解 SQL 它确实会有帮助 我还听说您无法使用 Linq 在 ASP NET 中运行异步查询 因此我想知道它
  • 如何使用 BeautifulSoup 获取选项文本

    我想使用 BeautifulSoup 来获取以下 html 中的选项文本 例如 我想获取 2002 12 2003 12 等
  • 使用Python/PIL裁剪图像的非对称区域

    有没有办法剪掉non使用 Python PIL 绘制图像的矩形区域 例如在这张图片中 我想排除所有黑色区域以及塔 屋顶和电线杆 http img153 imageshack us img153 5330 skybig jpg 我猜是图像路径
  • 函数模板可以用作高阶函数调用中的一等公民吗?

    将函数模板作为参数传递给另一个函数模板总是有点棘手 通常 人们必须创建一个 lambda 对象来调用原始函数 Example template
  • 在 Swift 中实现哈希组合器

    我正在延长一个struct符合Hashable 我将使用DJB2哈希组合器来完成此操作 为了使编写其他东西的哈希函数变得容易 我想扩展Hashable协议 以便我的哈希函数可以这样写 extension MyStruct Hashable
  • 数据库架构更改时 Azure 无缝升级

    假设我有一个生产部署和临时部署 两者都使用自己的 SQL Azure 数据库 如果暂存中的模式已更改并且需要部署到生产中 是否有一种定义的方法可以在生产数据库上实现数据库升级 无需停机 例如如果我交换 VIP staging 生产 同时以某
  • 如何为字符串数组中的每个元素添加字符串前缀?

    我想知道在Java中是否有一个函数可以将定义的字符串添加到字符串数组的每个字符串的开头 例如 my function apple orange ant eat an would return eat an apple eat an oran
  • 无法更新在 AFTER INSERT 中执行触发器的表

    我正在运行 MySQL 5 5 9 和 InnoDB 我尝试创建一个版本化表 其中current字段指示记录是否是最新版本 就像是 autonumber id name current 1 1 Yes 0 2 1 No 1 不管怎样 我过去
  • 成功的ajax调用后数据表不更新

    我有一个数据表 表的每一行都有一个commandButton called Remove 这应该从模型和视图中删除该行并就地执行更新 作为页脚 我还有另一个commandButton called 删除每一行 最后一个按钮有效 我单击它 每
  • Maven jersey-multipart 缺少 javax.ws.rs.core.Response 的依赖项

    我似乎缺少依赖项 但找不到解决方案 我已确保所有球衣版本均与回答的相同here Error SEVERE The following errors and warnings have been detected with resource
  • WSO2 ESB:将 JSON 提交到代理服务时出现意外字符错误

    我正在尝试使用 WSO2 ESB 4 9 0 中的 WSO2 Facebook 连接器从 Facebook 检索数据 我在下面提供了代理配置