.NET VB -- POST Contact (Creating a New Contact / Contact Collections)

Occasional Participant

.NET VB -- POST Contact (Creating a New Contact / Contact Collections)

Thought this code may be of use to others who want to POST a new contact from .NET (RE: http://developer.constantcontact.com/doc/contactsCollection) . I found this post: http://developer.constantcontact.com/node/112 most helpful (C#). Here's what worked for me (VB):


Imports System.Net
Imports System.IO

Dim sUsername As String =
Dim sPassword As String =
Dim sUri As String = "http://api.constantcontact.com/ws/customers/" & sUsername & "/contacts"

'If you have more than one list, change this number to whichever list you're targeting
Dim sListUri As String = "http://api.constantcontact.com/ws/customers/" & sUsername & "/lists/1"
Dim sAPIKey As String =

Public Sub AddNewContact(ByVal Email As String)

'NOTE: Email value is passed, in this example, from textbox
'// Note: Remember to add "using System.Net;"
'// Create LoginCreditials

'Note: The login for the API is literally + % +
Dim NC As New NetworkCredential
NC.UserName = sAPIKey & "%" & sUsername
NC.Password = sPassword

'// Create WebRequest
Dim reqRequest As HttpWebRequest = WebRequest.Create(sUri)
reqRequest.Credentials = NC
reqRequest.Method = "POST"
'Note: For POST of single subscriber, use ATOM – application/atom+xml
reqRequest.ContentType = "application/atom+xml"

'// Set up XML String for the POST
'// Long string with quotes, use an absolute string with literals
' NOTE: This is a POST to the Contacts Collection –
' see http://developer.constantcontact.com/doc/contactsCollection (Creating a New Contact)
' // Set up the XML Document, application dependant

Dim XMLData As String
XMLData = ' NOTE --- plug in XMLData string from attached file

'// Convert XMLData to byteArray for posting
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(XMLData)

'// Send POST request
'// Recast the response to HttpWebResponse for easier processing
'// Place in a try block to ensure that any errors are caught

'// Set the ContentLength portion of the header
reqRequest.ContentLength = byteArray.Length
Dim XMLResponse As String '= "Bytes to send: " + byteArray.Length

'// Create a stream for the POST Request
Dim streamRequest As Stream = reqRequest.GetRequestStream()

'// Write the data to the stream.
streamRequest.Write(byteArray, 0, byteArray.Length)


'// Process the Response as needed
'// This is a generic StreamReader to read the entire response in
'// You can recast this as any type of stream derivative
'// Note: Remember to add "using System.IO"

Using reqResponse As HttpWebResponse = TryCast(reqRequest.GetResponse(), HttpWebResponse)

Dim reader As New StreamReader(reqResponse.GetResponseStream())

XMLResponse = reader.ReadToEnd()

'// Close Reader

End Using

'// Close the response to free up the system resources

' ' optional -- return response with function
'Return XMLResponse

Catch e As WebException

'// Get the web exception type and response code
' return "WebException: " + e.Status + " With response: " + e.Message

Catch e As Exception

'// Get the exception type
'return "Exception:" + e.Message
End Try

End Sub


Note: The "XMLData" code can be found in attached file.
Developer Portal

View API documentation, code samples, get your API key.

Visit Page