Apigee Edge 문서입니다.
Apigee X 문서로 이동 정보
SourceUnavailable
오류 코드
steps.xml2json.SourceUnavailable
오류 응답 본문
{ "fault": { "faultstring": "XMLToJSON[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.xmltojson.SourceUnavailable" } } }
오류 메시지 예
{
"fault": {
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available",
"detail": {
"errorcode": "steps.xml2json.SourceUnavailable"
}
}
}
원인
이 오류는 XML to JSON 정책의 <Source>
요소에 지정된 메시지 또는 문자열 변수가 다음 중 하나일 때 발생합니다.
- 범위를 벗어난 경우(정책이 실행 중인 특정 흐름에서 사용할 수 없음)
- 확인할 수 없는 경우(정의되지 않음)
예를 들어 XML to JSON 정책이 요청 흐름에서 실행되어야 하지만, <Source>
요소가 요청 흐름에 존재하지 않는 response
변수로 설정된 경우에 이 오류가 발생합니다.
진단
오류가 발생한 XML to JSON 정책과 사용할 수 없는 변수 이름을 확인합니다. 두 항목은 모두 오류 응답의
faultstring
요소에서 찾을 수 있습니다. 예를 들어 다음faultstring
에서 정책 이름은Convert-XMLToJSON
이고 변수는response
입니다."faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
실패한 XML to JSON 정책 XML에서
<Source>
요소에 설정된 변수 이름이 기본 문자열에서 확인된 변수 이름과 일치하는지 확인합니다(위 1단계). 예를 들어 다음 XML to JSON 정책은<Source>
요소에faultstring
에 있는 것과 일치하는response
라는 변수를 지정합니다.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON"> <DisplayName>Convert-XMLToJSON</DisplayName> <Properties/> <Format>google</Format> <OutputVariable>response</OutputVariable> <Source>response</Source> </XMLToJSON>
<Source>
요소에 사용된 변수가 XML to JSON 정책이 실행되는 흐름에서 정의되었고 사용 가능한지 확인합니다.변수가 다음 중 하나인 경우
- 범위를 벗어난 경우(정책이 실행 중인 특정 흐름에서 사용할 수 없음)
- 확인할 수 없는 경우(정의되지 않음)
이는 오류의 원인이 됩니다.
예를 들어 위에 표시된 XML to JSON 정책이 요청 흐름으로 실행된다고 가정해보세요.
response
변수는 XML to JSON 정책의<Source>
요소에서 사용됩니다. 응답 변수는 응답 흐름에서만 사용할 수 있습니다.응답 변수가 요청 흐름에 존재하지 않기 때문에 오류 코드가 수신됩니다.
steps.xml2json.SourceUnavailable
해결 방법
실패한 XML to JSON 정책의 <Source>
요소에 설정된 변수가 정의되었고 정책이 실행되는 흐름에 존재하는지 확인합니다.
위에 표시된 XML to JSON 정책 예시를 수정하려면 요청 흐름에 있는 대로 request
변수를 사용하도록 <Source>
요소를 수정할 수 있습니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
<DisplayName>Convert-XMLToJSON</DisplayName>
<Properties/>
<Format>google</Format>
<OutputVariable>response</OutputVariable>
<Source>request</Source>
</XMLToJSON>
ExecutionFailed
오류 코드
steps.xml2json.ExecutionFailed
오류 응답 본문
{ "fault": { "faultstring": "XMLToJSON[policy_name]: Execution failed. reason: Premature end of document while parsing at line [line_number](possibly around char [character_number])", "detail": { "errorcode": "steps.xml2json.ExecutionFailed" } } }
가능한 원인
이 오류의 가능한 원인은 다음과 같습니다.
원인 | 설명 |
입력 페이로드 누락 | 입력 페이로드(XML)가 비어 있습니다. |
무효하거나 형식이 잘못된 입력 | XML to JSON 정책으로 전달된 입력(XML)이 무효하거나 형식이 잘못되었습니다. |
원인: 입력 페이로드 누락
XML to JSON 정책에서 <Source>
요소에 지정된 변수의 콘텐츠(페이로드)가 비어 있으면 이 오류가 발생합니다.
예를 들어 XML to JSON 정책의 <Source>
요소가 request
또는 response
변수로 설정되었고 XML 페이로드를 포함해야 하는 경우에 페이로드가 비어 있으면 이 오류가 발생합니다.
진단
오류가 발생한 XML to JSON 정책을 확인합니다. 이 정보는 오류 응답의
faultstring
요소에서 확인할 수 있습니다. 예를 들어 다음faultstring
에서 정책 이름은Convert-XMLToJSON
입니다."faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 1(possibly around char 0)"
실패하는 XML to JSON 정책 XML에서
<Source>
요소를 검사하고 지정된 변수를 확인합니다. 예를 들어 다음 XML to JSON 정책에는 요청에<Source>
요소가 설정되어 있습니다.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON"> <DisplayName>Convert-XMLToJSON</DisplayName> <Properties/> <Options> <RecognizeNumber>true</RecognizeNumber> <RecognizeBoolean>true</RecognizeBoolean> <RecognizeNull>true</RecognizeNull> </Options> <OutputVariable>request</OutputVariable> <Source>request</Source> </XMLToJSON>
XMLToJSON 정책의
<Source>
요소에 지정된 변수가 비어 있는지 확인합니다. 비어 있으면 이것이 오류의 원인입니다.위에 표시된 XML to JSON 정책 예시에서 클라이언트가 전송한 요청 페이로드(즉, 요청 본문)는 비어 있습니다.
예를 들면 다음과 같습니다.
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml"
XML 요청 페이로드가 비어 있기 때문에 오류 코드가 수신됩니다.
steps.xml2json.ExecutionFailed
이 오류는
<Source>
요소가 응답으로 설정되었지만 백엔드 서버에서 빈 페이로드가 전달되었을 때에도 발생할 수 있습니다.
해결 방법
<Source>
요소를 통해 XML to JSON 정책에 전달된 입력이 유효한 XML 페이로드이고 비어 있지 않은지 확인합니다.
샘플 XML to JSON 정책의 문제를 해결하려면 유효한 XML 페이로드를 전달합니다. 예를 들면 다음과 같습니다.
다음 내용으로 city.xml이라는 파일을 만듭니다.
<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode> </root>
다음과 같이 cURL 명령어를 사용하여 API 호출을 수행합니다.
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml" -X POST -d @company.xml
원인: 입력이 잘못되었거나 형식이 잘못됨
XML to JSON 정책이 무효하거나 형식이 잘못된 입력을 파싱할 경우 이 오류가 발생합니다.
예를 들어 무효한 다음 XML이 XML to JSON 정책에 입력으로 제공된 경우,
<?xml version="1.0" encoding="UTF-8"?>
<root>
<City>Bengaluru</City>
<Name>Apigee</Name>
<Pincode>560016</Pincode>
다음 오류가 발생합니다.
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly around char 0)"
진단
오류가 발생한 XML to JSON 정책을 확인합니다. 이 정보는 오류 응답의
faultstring
요소에서 확인할 수 있습니다. 예를 들어 다음faultstring
에서 정책 이름은Convert-XMLToJSON
입니다."faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly around char 0)"
실패하는 XML to JSON 정책 XML에 지정된
<Source>
요소를 검사합니다. 예를 들어 다음 XML to JSON 정책에는<Source>
요소가request
변수로 설정되어 있습니다.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON"> <DisplayName>Convert-XMLToJSON</DisplayName> <Properties/> <Options> <RecognizeNumber>true</RecognizeNumber> <RecognizeBoolean>true</RecognizeBoolean> <RecognizeNull>true</RecognizeNull> </Options> <OutputVariable>request</OutputVariable> <Source>request</Source> </XMLToJSON>
XML To JSON 정책의
<Source>
요소에 지정된 입력이 유효한 XML 페이로드인지 확인합니다. 입력이 무효하거나 형식이 잘못되었으면 이것이 오류의 원인입니다.위에 표시된 XML to JSON 정책 예시에서는 무효한 다음 XML이
city.xml
파일을 통해 변수 추출 정책에 전달되었습니다:<?xml version="1.0" encoding="UTF-8"?> <root> <City>Bengaluru</City> <Name>Apigee</Name> <Pincode>560016</Pincode>
다음은 요청 전달 방식을 보여주는 샘플 API 호출입니다.
curl -v "http://<org>-<env>.apigee.net/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xml
XML에
<root>
요소의 종료 태그가 없으므로 API에 전달된 XML 페이로드가 무효합니다. 따라서 다음 오류 코드가 수신됩니다.steps.xml2json.ExecutionFailed
이 오류는
<Source>
요소가 응답으로 설정되었지만 백엔드 서버의 XML 응답 페이로드가 무효하거나 형식이 잘못된 경우에도 발생할 수 있습니다.
해결 방법
<Source>
요소를 통해 XML to JSON 정책에 전달된 입력이 유효하고 형식이 올바른지 확인하세요.
위에서 설명한 XML to JSON 정책 샘플의 문제를 해결하려면 다음과 같이 유효한 XML 페이로드 요청을 전달합니다.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<City>Bengaluru</City>
<Name>Apigee</Name>
<Pincode>560016</Pincode>
</root>
OutputVariableIsNotAvailable
오류 코드
steps.xml2json.OutputVariableIsNotAvailable
오류 응답 본문
{ "fault": { "faultstring": "XMLToJSON[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.xml2json.OutputVariableIsNotAvailable" } } }
오류 메시지 예
{
"fault": {
"faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available.",
"detail": {
"errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
}
}
}
원인
이 오류는 XML to JSON 정책의 <Source>
요소에 지정된 변수가 문자열 유형이고 <OutputVariable>
요소가 정의되지 않은 경우에 발생합니다. <Source>
요소에 정의된 변수가 string
유형인 경우 <OutputVariable>
요소가 필수입니다.
진단
오류가 발생한 XML to JSON 정책을 확인합니다. 오류 응답의
faultstring
요소에서 확인할 수 있습니다. 예를 들어 다음faultstring
에서 정책 이름은Convert-XMLToJSON
입니다."faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."
실패한 XML to JSON 정책에서
<OutputVariable>
이 누락되었는지 확인합니다.다음은
<OutputVariable>
요소가 누락된 XML to JSON 정책 샘플입니다.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON"> <DisplayName>Convert-XMLToJSON</DisplayName> <Properties/> <Format>google</Format> <Source>TrackingNumber</Source> </XMLToJSON>
<Source>
요소에 지정된 변수 유형을 확인합니다.- 변수가 먼저 정의된 API 프록시 번들 내에서 코드를 찾습니다.
- 정책에서 변수가 먼저 정의되고 채워지는 것을 확인한 다음에는 다음과 같이 해당 변수의 유형을 확인해야 합니다.
- 유형 속성의 값을 확인합니다(있는 경우).
- 유형 속성이 없으면 변수가 문자열로 간주됩니다.
- 변수 유형이
string
이면 이것이 오류의 원인입니다. 일반적인 변수 및 유형에 대해서는 변수 참조에서 자세히 알아볼 수 있습니다.
예를 들어 위 XML to JSON 정책에서 TrackingNumber 변수를 확인해보세요. 이 변수는 문자열 유형입니다. 이제는 아래 표시된 것처럼
TrackingNumber
라는 변수에 값을 설정하기 위해 사용되는 메시지 할당 정책을 고려해보세요.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber"> <DisplayName>Assign_TrackingNumber</DisplayName> <Properties/> <AssignVariable> <Name>TrackingNumber</Name> <Value><![CDATA[<Code>560075393539898</Code>]]></Value> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<AssignVariable>
을 통해 설정되는 변수 유형은 문자열입니다. 따라서TrackingNumber
변수는 문자열 유형입니다.TrackingNumber
변수는 XML To JSON 정책의<Source>
요소에 사용됩니다.<Source>TrackingNumber</Source>
TrackingNumber
가 문자열 유형이고 정책에<OutputVariable>
이 누락되었기 때문에 오류 코드가 수신됩니다.steps.xml2json.OutputVariableIsNotAvailable
해결 방법
XMLToJSON 정책의 <Source>
요소에 지정된 변수가 문자열 유형이면 <OutputVariable>
요소가 여기에서 필수인지 확인합니다.
위에 설명한 XML To JSON 정책을 수정하려면 아래 표시된 것처럼 <OutputVariable>
요소를 포함합니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
<DisplayName>Convert-XMLToJSON</DisplayName>
<Properties/>
<Format>google</Format>
<OutputVariable>response</OutputVariable>
<Source>TrackingNumber</Source>
</XMLToJSON>
InCompatibleTypes
오류 코드
steps.xml2json.InCompatibleTypes
오류 응답 본문
{ "fault": { "faultstring": "XMLToJSON[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.xml2json.InCompatibleTypes" } } }
오류 메시지 예
{
"fault": {
"faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.xml2json.InCompatibleTypes"
}
}
}
원인
이 오류는 <Source>
요소 및 <OutputVariable>
요소에 정의된 변수 유형이 동일하지 않을 때 발생합니다. <Source>
요소 및 <OutputVariable>
요소 내에 포함된 변수는 유형이 일치해야 합니다.
The valid types are message and string.
진단
오류가 발생한 XML to JSON 정책을 확인합니다. 오류 응답의
faultstring
요소에서 확인할 수 있습니다. 예를 들어 다음faultstring
에서 정책 이름은XMLToJSON_CheckType
입니다."faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
실패한 XML To JSON 정책에서
<OutputVariable>
에 지정된 값을 확인합니다.다음은
<OutputVariable>
요소가 누락된 XMLToJSON 정책 샘플입니다.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType"> <DisplayName>XMLToJSON_CheckType</DisplayName> <Properties/> <Format>google</Format> <OutputVariable>request</OutputVariable> <Source>TrackingNumber</Source> </XMLToJSON>
<Source>
및<OutputVariable>
요소에 지정된 변수 유형을 확인합니다.- 이러한 각 변수가 먼저 정의된 API 프록시 번들 내에서 코드를 찾습니다.
- 정책에서 변수가 먼저 정의되고 채워지는 것을 확인한 다음에는 다음과 같이 해당 변수의 유형을 확인해야 합니다.
- 유형 속성의 값을 확인합니다(있는 경우).
- 유형 속성이 없으면 변수가 문자열로 간주됩니다.
<Source>
에 지정된 변수 유형이string
이고<OutputVariable>
유형이 메시지이거나 그 반대인 경우 이것이 오류의 원인입니다. 일반적인 변수 및 유형에 대해서는 변수 참조에서 자세히 알아볼 수 있습니다.
예를 들어 아래 표시된 것처럼
TrackingNumber
라는 변수에 값을 설정하기 위해 사용되는 메시지 할당 정책을 고려해보세요.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber"> <DisplayName>Assign_TrackingNumber</DisplayName> <Properties/> <AssignVariable> <Name>TrackingNumber</Name> <Value><![CDATA[<Code>560075393539898</Code>]]></Value> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<AssignVariable>
을 통해 설정되는 변수 유형은 문자열입니다. 따라서TrackingNumber
변수는 문자열 유형입니다.TrackingNumber
변수는 XMLToJSON 정책의<Source>
요소에 사용됩니다.<Source>TrackingNumber</Source>
마찬가지로
request
변수는 XML To JSON 정책의<OutputVariable>
요소에 사용됩니다.<OutputVariable>request</OutputVariable>
TrackingNumber
가string
유형이고response
변수가message
유형이기 때문에 유형이 호환되지 않아서 오류 코드가 수신됩니다.steps.xml2json.InCompatibleTypes
위 오류는
<Source>
요소의 변수가message
유형이지만<OutputVariable>
요소의 유형이 문자열 유형인 경우에도 발생할 수 있습니다.
해결 방법
<Source>
요소 및 <OutputVariable>
요소에 정의된 변수 유형이 항상 동일한지 확인하세요. <Source>
요소 및 <OutputVariable>
요소 내에 포함된 변수는 유형이 일치해야 합니다.
위에 설명한 XML To JSON 정책을 수정하려면 메시지 할당 정책을 사용해서 string
유형의 다른 TrackingNumber_output
변수를 선언하고 이 변수를 XML To JSON 정책의 <OutputVariable>
요소에 사용할 수 있습니다.
수정된 메시지 할당 정책:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber">
<DisplayName>Assign_TrackingNumber</DisplayName>
<Properties/>
<AssignVariable>
<Name>TrackingNumber</Name>
<Value><![CDATA[<Code>560098</Code>]]></Value>
<Ref/>
</AssignVariable>
<AssignVariable>
<Name>TrackingNumber_output</Name>
<Ref/>
</AssignVariable>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>
수정된 XMLToJSON 정책:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType">
<DisplayName>XMLToJSON_CheckType</DisplayName>
<Properties/>
<Format>google</Format>
<OutputVariable>TrackingNumber_output</OutputVariable>
<Source>TrackingNumber</Source>
</XMLToJSON>
InvalidSourceType
오류 코드
steps.xml2json.InvalidSourceType
오류 응답 본문
{ "fault": { "faultstring": "XMLToJSON[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.xml2json.InvalidSourceType" } } }
오류 메시지 예
{
"fault": {
"faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string].",
"detail": {
"errorcode": "steps.xml2json.InvalidSourceType"
}
}
}
원인
이 오류는 <Source>
요소를 정의하기 위해 사용되는 변수 유형이 무효인 경우에 발생합니다. 유효한 변수 유형은 message
및 string
입니다.
진단
XML to JSON 정책에 사용된 무효한 소스 유형을 확인합니다. 이 정보는 오류 메시지에서 확인할 수 있습니다. 예를 들어 다음 오류에서 무효한 유형은 정수입니다.
"faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
실패가 발생한 특정 API 프록시에서 모든 XML to JSON 정책을 조사합니다. 실패한 XML To JSON 정책에서
<Source>
에 지정된 변수의 이름을 확인합니다.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType"> <DisplayName>XMLToJSON_CheckType</DisplayName> <Properties/> <Format>google</Format> <OutputVariable>response</OutputVariable> <Source>BookCode</Source> </XMLToJSON>
<Source>
요소에 지정된 변수 유형을 확인합니다.- 이 변수가 먼저 정의된 API 프록시 번들 내에서 코드를 찾습니다.
- 정책에서 변수가 먼저 정의되고 채워지는 것을 확인한 다음에는 다음과 같이 해당 변수의 유형을 확인해야 합니다.
- 유형 속성의 값을 확인합니다(있는 경우).
- 유형 속성이 없으면 변수가 문자열로 간주됩니다.
<Source>
에 지정된 변수 유형이message
또는string
유형이면 이것이 오류의 원인입니다. 일반적인 변수 및 유형에 대해서는 변수 참조에서 자세히 알아볼 수 있습니다.
예를 들어 XML 페이로드에서 값을 추출하기 위해 사용되고 아래 표시된 것처럼
BookCode
변수 값을integer
유형으로 설정하는 ExtractVariables 정책을 고려해보세요.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract_BookCode"> <DisplayName>Extract_BookCode</DisplayName> <Properties/> <Source>request</Source> <XMLPayload stopPayloadProcessing="false"> <Variable name="BookCode" type="integer"> <XPath>/root/BookCode</XPath> </Variable> </XMLPayload> </ExtractVariables>
BookCode
변수는 XML To JSON 정책의<Source>
요소에 사용됩니다.<Source>BookCode</Source>
이 변수의 유형이 유효한
<Source>
유형이 아닌Integer
이므로, API 프록시가 오류로 실패합니다.steps.xml2json.InvalidSourceType
해결 방법
<Source>
요소를 지정하기 위해 사용되는 변수 유형이 유효한지 확인합니다. 유효한 <Source>
유형은 message
및 string
입니다.
XML To JSON 정책에서 위와 같은 오류를 방지하려면 message
유형 또는 유효한 XML 페이로드인 다른 문자열로 된 request
변수를 사용할 수 있습니다.