2017-01-12 1 views
0

기본적으로 esb api에서 두 번의 POST 호출을 수행합니다. 첫 번째 호출은 내용 유형이 텍스트 인 경우입니다. 다음 호출은 콘텐츠 유형이 application/json 인 호출입니다. 두 경우 모두 payload mediator를 사용하여 페이로드를 생성합니다. 첫 번째 호출이 성공적으로 실행 된 후 두 번째 호출이 실패합니다. 두 번째 호출을하는 동안 요청 페이로드가 비어 있음을 알 수 있습니다. 나는 와이어 로그를 가능하게하고 json 페이로드의 메시지 컨텍스트를 인쇄 할 수 있지만 두 번째 호출을하는 동안 요청 본문이 비어 있음을 확인했습니다. 제가 여기서 뭔가 잘못하고 있다면 알려주세요. 다음은 WSO2 ESB API가 끝점에 빈 페이로드 보내기

코드입니다 첫 번째 호출은이 두 번째 호출은 엔드 포인트에

감사합니다, 아짐을 빈 요청 페이로드를 보내는 <payloadFactory media-type="xml"> <format> <text xmlns="http://ws.apache.org/commons/ns/payload">userName=$1&amp;password=$2&amp; domain=$3&amp;captcha=$4 </text> </format> <args> <arg evaluator="xml" expression="get-property('uri.var.swmUser')" xmlns:ns="http://org.apache.synapse/xsd"/> <arg evaluator="xml" expression="get-property('uri.var.swmPassword1')" xmlns:ns="http://org.apache.synapse/xsd"/> <arg evaluator="xml" expression="get-property('uri.var.domain')" xmlns:ns="http://org.apache.synapse/xsd"/> <arg evaluator="xml"expression="get-property('uri.var.captcha')" xmlns:ns="http://org.apache.synapse/xsd"/> </args> </payloadFactory> <property name="ContentType" scope="axis2" value="text/plain"/> <property name="messageType" scope="axis2" value="text/plain"/> <header name="Accept" scope="transport" value="application/json"/> <log level="full"> <property expression="json-eval($.)" name="requestpayload" xmlns:ns="http://org.apache.synapse/xsd"/> </log> <call> <endpoint key="swmLoginEP"/> </call> <property expression="//jsonObject//sessionId//text()" name="sessionId" xmlns:ns="http://org.apache.synapse/xsd"/> <log level="full"> <property expression="get-property('sessionId')" name="sessionId" xmlns:ns="http://org.apache.synapse/xsd"/> </log> <property name="ContentType" scope="axis2" type="STRING" value="application/json"/> <property name="messageType" scope="axis2" type="STRING" value="application/json"/> <property expression="get-property('uri.var.key')" name="attribute" type="STRING" xmlns:ns="http://org.apache.synapse/xsd"/> <payloadFactory media-type="json"> <format>{"attributeNames": ["vehicleModelYear"]} </format> <args> <arg evaluator="xml" expression="get-property('attribute')" xmlns:ns="http://org.apache.synapse/xsd"/> </args> </payloadFactory> <property name="ContentType" scope="axis2" type="STRING" value="application/json"/> <property name="messageType" scope="axis2" type="STRING" value="application/json"/> <header name="Accept" scope="transport" value="application/json"/> <header expression="get-property('sessionId')" name="sessionId" scope="transport" xmlns:ns="http://org.apache.synapse/xsd"/> <log level="full"> <property expression="json-eval($.)" name="request payload of get values" xmlns:ns="http://org.apache.synapse/xsd"/> </log> <log> <property expression="$body" name="PAYLOAD" xmlns:ns="http://org.apache.synapse/xsd"/> </log> <call> <endpoint key="swmAttributeValuesEP"/> </call>

+0

당신이 당신의 코드를 게시 할 수 없습니다 당신은 예를 들어 다음과 같은 게시물을 사용하도록 명시 적으로 정확한하려고 했습니까? 그것이 없으면 누구나 정확히 무엇이 잘못되었다고 말할 수 있을지 의심 스럽습니다. –

+0

안녕하세요 @MariaDeleva 좋은 날! 귀하의 요청에 따라 코드가 추가되었습니다. 확인해주십시오. – Azim

+0

안녕하세요, 두 번째 페이로드 팩토리에서 절대 사용되지 않는 arg (값 가져 오기 속성 ('attribute') 포함)이 있습니까? – Nicolas

답변

0

이 쿼리가 일 수 있었다 POST가 아닌 GET을 통해 수행됩니다 (빈 몸체를 설명 할 수 있음). 당신은

<property description="Force Post" name="HTTP_METHOD" scope="axis2" 
    type="STRING" value="POST"/> 
+0

끝점 선언에 http 메서드가 게시되어 있고 호출 할 때 esb에서 POST 호출을하고 있음을 볼 수 있습니다.이 호출은 전선 로그에서 보았습니다 – Azim