PureBasic
PureBasic
HTTP POST with XML Body
Demonstrates sending an HTTP POST with a XML body.Chilkat PureBasic Downloads
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkXml.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
http.i = CkHttp::ckCreate()
If http.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Implements the following CURL command:
; curl -X POST https://example.com/StockQuote \
; -H "Host: www.example.org" \
; -H "Content-Type: application/soap+xml; charset=utf-8" \
; -H "SOAPAction: http://www.example.org/StockPrice" \
; -d '<?xml version="1.0"?>
;
; <soap:Envelope
; xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
; soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
;
; <soap:Body xmlns:m="http://www.example.org/stock">
; <m:GetStockPrice>
; <m:StockName>IBM</m:StockName>
; </m:GetStockPrice>
; </soap:Body>
;
; </soap:Envelope>'
; Use the following online tool to generate HTTP code from a CURL command
; Convert a cURL Command to HTTP Source Code
; Use this online tool to generate code from sample XML:
; Generate Code to Create XML
; --------------------------------------------------------------------------------
; Also see Chilkat's Online WSDL Code Generator
; to generate code and SOAP Request and Response XML for each operation in a WSDL.
; --------------------------------------------------------------------------------
; The following XML is sent in the request body.
; <?xml version="1.0" encoding="utf-8"?>
; <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
; <soap:Body xmlns:m="http://www.example.org/stock">
; <m:GetStockPrice>
; <m:StockName>IBM</m:StockName>
; </m:GetStockPrice>
; </soap:Body>
; </soap:Envelope>
;
xml.i = CkXml::ckCreate()
If xml.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkXml::setCkTag(xml, "soap:Envelope")
CkXml::ckAddAttribute(xml,"xmlns:soap","http://www.w3.org/2003/05/soap-envelope/")
CkXml::ckAddAttribute(xml,"soap:encodingStyle","http://www.w3.org/2003/05/soap-encoding")
CkXml::ckUpdateAttrAt(xml,"soap:Body",1,"xmlns:m","http://www.example.org/stock")
CkXml::ckUpdateChildContent(xml,"soap:Body|m:GetStockPrice|m:StockName","IBM")
CkHttp::ckSetRequestHeader(http,"SOAPAction","http://www.example.org/StockPrice")
CkHttp::ckSetRequestHeader(http,"Host","www.example.org")
CkHttp::ckSetRequestHeader(http,"Content-Type","application/soap+xml; charset=utf-8")
sbRequestBody.i = CkStringBuilder::ckCreate()
If sbRequestBody.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkXml::ckGetXmlSb(xml,sbRequestBody)
resp.i = CkHttpResponse::ckCreate()
If resp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkHttp::ckHttpSb(http,"POST","https://example.com/StockQuote",sbRequestBody,"utf-8","application/soap+xml; charset=utf-8",resp)
If success = 0
Debug CkHttp::ckLastErrorText(http)
CkHttp::ckDispose(http)
CkXml::ckDispose(xml)
CkStringBuilder::ckDispose(sbRequestBody)
CkHttpResponse::ckDispose(resp)
ProcedureReturn
EndIf
Debug Str(CkHttpResponse::ckStatusCode(resp))
Debug CkHttpResponse::ckBodyStr(resp)
CkHttp::ckDispose(http)
CkXml::ckDispose(xml)
CkStringBuilder::ckDispose(sbRequestBody)
CkHttpResponse::ckDispose(resp)
ProcedureReturn
EndProcedure