wwHTTP::Send
about 2 minutes to read

This is the generic (and classical) Http operation that handles all types of HTTP requests.

The .Get(),.Post(),.Put(),.Delete() methods are simply shortcut wrappers around this method that set the .cHttpVerb and meant to be more explicit for code readability.

The primary Http retrieval method of this class that retrieves HTTP content from the Web. Despite its name this method can also POST data to the server, in fact it can use any HTTP verb to submit data.

The method supports URL syntax, HTTPS syntax, username and password authentication, content data (via AddPostKey() or the Post() and Put() method data parameters), custom Http headers (via AddHeader()) and saving large download output directly to file. You can also use OnHttpBufferUpdate to get download progress events.

This method syntax also applies to the old .HttpGet() method. The .Send() method replace this deprecated method with the exact same syntax.

o.Send(lcUrl, lcUsername, lcPassword, lcOutputFile)

Return Value

String - HTTP result, which most likely will be HTML, but can be whatever data the link returns. This includes XML and binary data like Word documents or even data files. On error this string will be blank and the nError and cErrorMsg properties will be set.

Parameters

lcUrl
The full URL you want to retrieve. This URL must include the protocol (HTTP or HTTPS for example) and the Domain Name or IP Address. Example: http://www.west-wind.com/wwipstuff.asp

lcUserName
Optional - Username used for Basic Authentication

lcPassword
Optional - Password used for Basic Authentication

Note: for backward compatibility the second parameter can also be numeric specifying the size of the result buffer to be returned

lcFileName
An optional path into which to download the content into. If this parameter is used the return value from this method will always return blank and only the file is created on success. To check for errors, check the nError/cErrorMsg and the cResultCode properties.

Remarks

This method returns raw text only - HTML is uninterpreted and presented as text. If the result is encoded you'll get the raw data back in encoded form. You need to explicitly decode the data.

To send custom headers use AddHeader(). To send data to the server use AddPostKey().

Example

Simple content retrieval:

foxpro
oHTTP=CREATEOBJECT("wwHTTP") lcHTML = oHTTP.HTTPGet("http://www.west-wind.com/") *** Show HTML generated in Browser ShowHTML( lcHTML ) && in wwUtils.prg

Sending Data to an HTML form:

foxpro
oHTTP=CREATEOBJECT("wwHTTP") oHTTP.AddPostKey("FirstName","Rick") oHTTP.AddPostKey("LastName","Strahl") oHTTP.AddPostKey("Company","West Wind Technologies") *** Optionally add custom headers oHTTP.AppendHeader("cache-control",private") oHttp.AppendHeader("Custom-Header","Custom value") lcHTML = oHTTP.HTTPGet("http://www.west-wind.com/wconnect/TestPage.wwd") ShowHTML( lcHTML )

Posting raw data

foxpro
loHttp = CREATEOBJECT("wwHttp") *** Specify that we want to post raw data and a custom content type loHttp.cContentType = "text/xml" && Content type of the data posted * loHttp.cHttpVerb = "POST" && Use for anything but POST/GET verbs (PUT/DELETE/HEAD/OPTIONS) *** Load up the XML data any way you need lcXML = FILETOSTR("XmlData.xml") *** Set the POST buffer - Note: No name parameter, just the buffer loHttp.AddPostKey(lcXML) lcXmlResult = loHttp.HttpGet("http://www.west-wind.com/SomeXmlService.xsvc") IF (loHttp.nError # 0) RETURN ENDIF ShowXml(lcXmlResult)

Making a REST Service call with JSON

foxpro
DO wwHttp DO wwJsonSerializer loSer = CREATEOBJECT("wwJsonSerializer") lcJsonIn = loSer.Serialize(loPostObject) && Some object or value to serialize loHttp = CREATEOBJECT("wwHttp") loHttp.cContentType = "application/json" loHttp.cHTTPVerb = "PUT" && Use any HTTP verbs POST/PUT/DELETE/GET etc. loHttp.AddPostKey(lcJsonIn) && raw post data lcJsonResult = loHttp.HttpGet(lcUrl) loResultObject = loSer.DeserializeJson(lcJsonResult) *** Do something with the result object ? loResultObject.status ? loResultObject.Data.SummaryValue

Uploading a file

foxpro
loHttp = CREATEOBJECT("wwHttp") *** Specify that we want to post raw data with a custom content type loHttp.cContentType = "application/pdf" lcPdf = FILETOSTR("Invoice.pdf") loHttp.AddPostKey(lcPdf) && Add as raw string *** Send to server and retrieve result lcHtml = loHttp.HttpGet("http://www.west-wind.com/SomeUril.xsvc")

Overloads:


See also:

Class wwHttp | wwHTTP::cResultCode | wwHTTP::nerror

© West Wind Technologies, 1996-2024 • Updated: 05/26/24
Comment or report problem with topic