Published on InterSystems Developer Community (https://community.intersystems.com)

Home > parsing xml response

Question
Token Ibragimov · Sep 6, 2018

parsing xml response

Hello!

I'm sending http resuest to the web service :

Set httpRequest=##class(%Net.HttpRequest).%New()
Set httpRequest.Server="177.127.120.10"
Set httpRequest.ContentType="text/xml" 
Set httpRequest.Https=1
Set httpRequest.ContentCharset="UTF-8"
Do httpRequest.SetHeader("Accept","text/xml")
Set httpRequest.Timeout=300     

Set xml="<CheckContractRequest><IIN>"_IINPay_"</IIN>"
_"<FirstName>"_name_"</FirstName>"
_"<LastName>"_surname_"</LastName>"
_"<MiddleName>"_middlename_"</MiddleName>"
_"<BirthDate>"_birthDate_"</BirthDate>"
_"<ContractType>CONST</ContractType></CheckContractRequest>"

do httpRequest.EntityBody.Write(xml)

set httpResponse = ##class(%Net.HttpResponse).%New()
Set httpResponse = httpRequest.Post("/sample/", 2)

set resp=httpRequest.HttpResponse
zw resp

if $zObjState(httpRequest.HttpResponse)
{
s resp=httpRequest.HttpResponse.Data
s len=32767,resptext=""
if $isObject(httpRequest.HttpResponse.Data) {
for  {
q:httpRequest.HttpResponse.Data.AtEnd
s resptext=resptext_httpRequest.HttpResponse.Data.Read(.len) q:len<0
}
s ^tk(2)=resptext
s response=..getXMLValue(resptext, "message")
}
elseif ($l(resp.Data)>0 ) {
s resptext=resp.Data
}

}

response:

<CheckContractRequest>
    <IIN>891299300335</IIN>
    <FirstName>Ivan</FirstName>
    <LastName>Ivanov</LastName>
    <MiddleName>Ivanovich</MiddleName>
    <BirthDate>01.01.1987</BirthDate>
    <ContractType>CONST</ContractType>
</CheckContractRequest>

The response :

<?xml version="1.0" encoding="UTF-8"?>
<CheckContractResponse>
    <code>0</code>
    <message>OK</message>
</CheckContractResponse>

the question:

1) how to know that request was sent succesfully to web service?

how I can get data from stream bellow ?

resp=<OBJECT REFERENCE>[121@%Net.HttpResponse]
+----------------- general information ---------------
|      oref value: 121
|      class name: %Net.HttpResponse
| reference count: 3
+----------------- attribute values ------------------
|    ContentBoundary = ""
|        ContentInfo = ""
|      ContentLength = ""
|        ContentType = ""
|               Data = "122@%Stream.GlobalBinary"
|        HttpVersion = ""
|       ReasonPhrase = ""
|         StatusCode = ""
|         StatusLine = ""

#Object Data Model #Ensemble

Source URL:https://community.intersystems.com/post/parsing-xml-response