Return Type | Function name | Arguments |
---|---|---|
hzEcode | hzHttpClient::PostAjax | (HttpRC&,const hzUrl&,hzVect<hzString>&,const hzList<hzPair>&,) |
Declared in file: hzHttpClient.h
Defined in file : hzHttpClient.cpp
Function Logic:
Function body:
hzEcode hzHttpClient::PostAjax (HttpRC& hRet, const hzUrl& url, hzVect<hzString>& hdrs, const hzList<hzPair>& formData) { _hzfunc("hzHttpClient::PostAjax") ; hzList<hzPair>::Iter iD ; hzChain F ; hzCookie cookie ; hzPair P ; hzString dom ; hzString res ; hzString S ; uint32_t nPort ; uint32_t nIndex ; hzEcode rc ; m_Header.Clear() ; m_Content.Clear() ; m_Request.Clear() ; if (!formData.Count()) return E_NODATA ; for (iD = formData ; iD.Valid() ; iD++) { P = iD.Element() ; if (F.Size()) F.AddByte(CHAR_AMPSAND) ; F << P.name ; F.AddByte(CHAR_EQUAL) ; F << P.value ; } dom = url.Domain() ; res = url.Resource() ; nPort = url.Port() ; if (url.IsSSL()) m_Request.Printf("POST https://%s%s HTTP/1.1\r\n", *dom, *res) ; else m_Request.Printf("POST http://%s%s HTTP/1.1\r\n", *dom, *res) ; m_Request << "Accept: text/*\r\n" ; m_Request << "Accept-Language: en-gb\r\n" ; for (nIndex = 0; nIndex < m_Cookies.Count() ; nIndex++) { cookie = m_Cookies.GetObj(nIndex) ; if (cookie.m_Flags & COOKIE_HTTPONLY) continue ; m_Request.Printf("Cookie: %s=%s\r\n", *cookie.m_Name, *cookie.m_Value) ; } m_Request << "User-Agent: HadronZoo/0.8 Linux 2.6.18\r\n" ; m_Request.Printf("Content-Length: %d\r\n", F.Size()) ; m_Request << "Host: " << dom << "\r\n" ; if (hdrs.Count()) { for (nIndex = 0; nIndex < hdrs.Count() ; nIndex++) m_Request << hdrs[nIndex] ; } m_Request << "Connection: close\r\n\r\n" ; m_Request << F ; S = m_Request ; threadLog("Sending [\n%s]\n", *S) ; if (url.IsSSL()) rc = m_Webhost.ConnectSSL(dom, nPort) ; else rc = m_Webhost.ConnectStd(dom, nPort) ; if (rc != E_OK) return rc ; rc = m_Webhost.Send(m_Request) ; return rc ; }