Ping method in wwAPI
You can now use the official Ping protocol to check if a site is running (as long as the site is running the Ping service). Pings a site and returns the number of hops and time taken for the Ping operation.
wwHttp::lIgnoreCertificateErrors flag to surpress SSL Errors
New flag added to wwHTTP class to optionally allow ignoring of any SSL errors that occur. Can be useful when debugging staging services that are often configured with lax or expired security certificates.
Fixed issue with Internet Explorer Offline Mode causing wwHttp not to be able to connect
Added an explicit call to bypass Offline mode if set in Internet Explorer which could cause connections to fail if IE was running or shut down when Offline Mode was selected.
Added wwHttp::GetHttpHeader method
This method allows retrieving response HTTP headers after a successful HTTP request has been made. Simplifies retrieval of individual header values.
wwHttp::OnHttpBufferUpdate and wwFtp::OnFtpBufferUpdate updated
Added an loHTTP and loFtp parameter respectively to these events to facilitate getting status information about the HTTP request when binding the 'event' with BINDEVENT. The HTTP/FTP instance allows getting information about the cancellation status of the request as well as error information without having to subclass. Updated examples provided.
Action required: Any implementations of OnHttpBufferUpdate/OnFtpBufferUpdate need to add an loHTTP/loFtp parameter to their parameter definition or else an error occurs for "Invalid number of parameters specified"
Fixed several issues in wwSmtp and Classic Operation
Fixed several small bugs in wwSmtp operation: Async operation didn't work with passwords. Async operation didn't recognize several headers. Added cUserAgent property to allow more easily setting of the x-mailer header. Fixed bug which kept attachment files open for
New wwSmtp Component
There have been many requests for support for SSL/TLS based logons so we've added a new mail component that handles this and a number of other requirements. There is a new wwSMTP component that works through .NET and supports SSL/TLS as well as sending multiple messages through a single logon for higher message throughput. There's also better attachment support and support for several alternate views on messages. For compatibility the new component also supports class wwIPStuff operation (using the same object property interface) and wwIPStuff has been updated to support lEnableSsl and a nMailMode switch that allows switching between between classic wwipstuff.dll or the .NET send modes. The new class API is compatible with the old one for a drop in replacement by just replacing the class name and setting nMailMode = 2.
Consolidated wwIPstuff class
The wwIPStuff class is slowly being dismantled in favor of more modular components like wwSmtp. For this reason the wwIPStuff class now no longer contains HTTP or SMTP functions.
Action required: Email features of wwIPstuff should migrate to the wwSmtp PRG class: loIP = CreateObject("wwSmtp");oIP.nMailMode = 2; provides full backwards compatibility with email features. All wwIpStuff HTTP functions should use the wwHttp PRG class which is 100% compatible with the old wwIPstuff http functions. In addition it's recommended you remove all references to loIP.EncodeDbf()/DecodeDbf(),ZipFiles(),UnzipFiles() and use the plain wwUtils functions w/o a class prefix (ie. just EncodeDbf()/DecodeDbf).
Version 5.50
May 3,2009
GZip support for wwHTTP
wwHTTP can now decode GZip content if you set the new lAllowGZip property to .t. When set wwHTTP will request GZip content and if the server is capable of sending GZip content it will do so. wwHTTP decodes the GZip response and returns the data as usual. This feature can be very useful espcially in distributed applications. With GZip support now both in wwHTTP and on the server side it becomes really easy to send compressed content transparently for applications.
wwHttp::cHttpVerb Property added
Added cHttpVerb property to wwHttp to allow for REST based services to be called. To call a URL that requires an extended verb (PUT,DELETE,HEAD,OPTIONS,TRACE) you can now specify cHttpVerb. If this property is blank wwHttp automatically chooses between GET or POST based on whether POST data is sent. cHttpVerb resets after the request has been made.
wwHttp::lIgnoreCertificateWarnings
New flag added that gets around the apparently frequent problem of connecting to servers that have invalid or expired security certificates. Although I don't recommend doing this (get the server fixed!) this flag will ignore most certificate errors and behave more closely like a browser.
wwHTTP::cContentType property added
There's now a cContentType property on the HTTP object to explicitly override the Content type when sending XML or Raw data with nHttpPostMode.
wwIPStuff SMTP Logging added
Added support for logging the SMTP session to a log file so the entire conversation with the server is visible. Implemented in wwIPStuff::cLogFile.
A number of small SMTP related Bug Fixes
There have been a number of small fixes in regards to the SMTP DLL code hanging on long runs of messages. Several small issues in this regard have been fixed. Thanks to Ron Edge, who let me debug his application remotely to find one of these obscure issues.
wwPOP3 fixes
There have been a few small fixes to the wwPOP3 code that resolves a bug related to message parsing. The previous code could on occasion cause messages to lose their processing context and result in messages getting lost. Fixed.
wwIPStuff Unzip Directory Nesting
The Unzip routines in wwIPStuff have been updated to allow unpacking nested directories using Dunzip32.dll.
Miscellaneous Enhancements and Fixes
There have been a number of small bug fixes and tweaks to various libraries. A number of performance enhancements have been made to wwXML in addition to providing a few extra helper methods for creating and manipulating XML DOM elements. wwHTTP has a few fixes for proxy operation and a couple of extra flags for dealing with certificate errors. wwSOAP parsing has been updated to deal with namespace discreprancies better. There's also better support for (manual) SOAP Header manipulation.
Version 5.20
1/26/2007
Please note the version number jump here occurs in order to sync up with the other tools in the West Wind Product line.
Distributed Samples Updated
The wwHttpDemo sample distributed application samples have been update to better demonstrate XML messaging rather than using the original cursor based transfer. While the original sample was little more lightweight using XML is easier and now more common. The samples have been updated to work more consistently and look a little more professional. Specifically the Customer List sample that allows browsing and updating of customers has a new look. The sample is accessible from the Enterprise demo page or by running wwHttpDemo.exe.
wwPOP3 updates
There have been a number of tweaks and fixes to the wwPOP3 library to make it more reliable. Message body parsing has been improved to return content in a more reliable fashion.
wwHttp class Improvements
The wwHTTP class provides client HTTP services to FoxPro applications that need to call on and retrieve Web based URLs and retrieve its content. wwHTTP has been made easier yet by providing the ability to directly download to files using the HttpGet method. In fact the more low level HttpGetEx functionality should be rarely required any longer as all features are now accessible with the easier HttpGet() method. New flag added that gets around the apparently frequent problem of connecting to servers that have invalid or expired security certificates. Although we don't recommend doing this (get the server fixed!) this flag will ignore most certificate errors and behave more closely like a browser.
wwHTTP::HTTPGet adds a download to file capability
To further reduce the need to use HTTPGetEx() for HTTP access the HttpGet() method now supports a 4th parameter to download HTTP content directly to file. This is useful for downloads of large content so that the output is moved into memory and returned as a string - useful for multi-megabyte downloads. This functionality was one of the last features that had to resort to using HttpGetEx(). HTTPGetEx() still is the low level interface to wwHTTP and HttpGet() delegates to it, but user code is recommended to use the easier to use HTTPGet() method.
Several enhancements to wwIPStuff's Email handling
wwIPStuff now adds the cExtraHeaders at the top of the email message which means that the extra headers take precedence over any default headers wwIPstuff adds later on. A new AddHeader() method has also been added to make it easier to add custom Headers to emails. This in turn means you can override wwIPStuff's default headers and should alleviate, in most cases, any restrictions on headers used that existed before. wwIPStuff now also handles return receipts with new lReturnReceipt property which sends a receipt to the sender. The cMailServer property now supports port numbers as part of the mail server address (mail.myserver.com:2525) which overrides the nPort property.
wwIPStuff SMTP Logging added
Added support for logging the SMTP session to a log file so the entire conversation with the server is visible. Implemented in wwIPStuff::cLogFile. This makes it considerably easier to troubleshoot connection and transmission problems in this increasingly Email hostile computer environment we find ourselves.
*** ACTION REQUIRED:
Make sure you update both wwIPStuff.dll and wwIPStuff.vcx in your applications. There was a change in the DLL to provide this feature. The new code will not run with the old DLL, but old code will work with the new DLL.