Sample C# Code
// Setup the payload here. The structure of the payload itself will obviously
// change depending on which method/dataset combination we call and what
// parameters that method/dataset combination requires.
// Note the inclusion of "apirequest=" at the start of the Payload string.
// This ensures that the POST data will be received by the API as a
// proper POST name/value pair.
string XMLPayload = @"apirequest=<?xml version=""1.0"" encoding=""UTF-8"" ?> <data>
<auth>
<loginname>your_api_username</loginname>
<key>your_api_key</key>
</auth>
<request>
<dataset>N</dataset>
<method>getGeoIDByCoord</method>
<count>false</count>
<returnType>xml</returnType>
<returnGeoType>wkt</returnGeoType>
<parameters>
<lat>40.713734</lat>
<lon>-74.011683</lon>
<submatch>N</submatch>
</parameters>
</request>
</data>";
// The API Endpoint
string Endpoint = "https://api.maponics.com/interface/";
// Initialize the webrequest object
WebRequest WebReq = WebRequest.Create(Endpoint);
// Set the method to POST, because we're sending POST data
WebReq.Method = "POST";
// And the content type to application/x-www-form-urlencoded, because we're emulating a
// standard web form.
WebReq.ContentType = "application/x-www-form-urlencoded";
// Since .NET sends POST data as a bytestream, we have to convert our payload to a byte array.
// This is convenient for finding the content-length anyway.
byte[] XMLByteArray = Encoding.UTF8.GetBytes(XMLPayload);
WebReq.ContentLength = XMLByteArray.Length;
// Get a handle to the request stream part of the WebRequest
// (This is the bytestream we'll be using to send our payload to the Maponics Spatial API).
// We could use BeginGetRequestStream() here, if we wanted to do this asynchronously.
// For simplification and the purposes of this code sample, we'll simply use the
// synchronous (blocking) GetRequestStream.
Stream RequestStream = WebReq.GetRequestStream();
// Send our data down the stream. (Merrily, merrily, merrily...)
// Since we used GetRequestStream, the code will block here and wait until the entire payload is sent.
RequestStream.Write(XMLByteArray, 0, XMLByteArray.Length);
// Close the stream
RequestStream.Close();
// That takes care of sending the request to the API. Now we have to grab the response.
// As before, we could use BeginGetResponse() if we wanted to do this asynchronously, but
// in this example, we'll just use GetResponse() and block until the API services the
// request and delivers our data
// Create the object that will handle the response
WebResponse WebRes = WebReq.GetResponse();
// Get a handle to the stream that will feed us our response data
Stream ResponseStream = WebRes.GetResponseStream();
// Create a streamreader to read the stream
StreamReader ResponseReader = new StreamReader(ResponseStream);
// Read the response into a string
string DataFromServer = ResponseReader.ReadToEnd();
// Clean up our objects
ResponseReader.Close();
ResponseStream.Close();
WebRes.Close();
// You can process the returned response here. For the purposes of this sample, we'll just
// write the raw text to the console
Console.WriteLine(DataFromServer);