Imports System Imports System.Net Imports System.Security.Cryptography Imports System.Text Imports System.Web.Services.Protocols Imports System.Xml Module SampleClient Sub Main(arg() As String) If arg.Length <> 3 Then Console.WriteLine("Usage: AtomClient user password url") Return End If Dim user As String = arg(0) Dim password As String = arg(1) Dim url As String = arg(2) ' Create a blog entry Dim blog As entryType = New entryType() blog.issued = DateTime.Now blog.title = "First Post!" ' Generator blog.generator = New generatorType() blog.generator.url = "http://www.intertwingly.net/blog/" blog.generator.Value = "WSDL C# Client" ' Fill in the content Dim d As XmlDocument = New XmlDocument() d.InnerXml = "
Hello World!
" blog.content = New contentType() { New contentType() } blog.content(0).mode = contentTypeMode.xml blog.content(0).type = "application/xhtml+xml" blog.content(0).Any = New XmlNode() { d.DocumentElement } ' Create an 'atom' authorization header Dim auth As Security = New Security() Dim unt As UsernameToken = New UsernameToken() auth.UsernameToken = New UsernameToken() auth.UsernameToken.Nonce = New Random().Next().ToString() auth.UsernameToken.Username=user auth.UsernameToken.Created=DateTime.Now.ToString("u").Replace(" ","T") ' Fill in the password Dim md As SHA1 = New SHA1CryptoServiceProvider() Dim v As string = _ auth.UsernameToken.Nonce + auth.UsernameToken.Created + password Dim digest As byte() = md.ComputeHash(Encoding.Default.GetBytes(v)) auth.UsernameToken.Password=New passwordType() auth.UsernameToken.Password.Value=Convert.ToBase64String(digest) auth.UsernameToken.Password.Type="wsse:PasswordDigest" auth.UsernameToken.Password.AnyAttr=New XmlAttribute() { _ d.CreateAttribute("wsse:placeholder", _ "http://schemas.xmlsoap.org/ws/2002/07/secext") } Try ' Post the request Dim api As AtomAPI = New AtomAPI() api.SecurityValue = auth api.Url = url api.POST(blog) Catch fault As SoapException System.Console.WriteLine(fault.Message) Catch httpStatus As WebException System.Console.WriteLine(httpStatus.Message) End Try End Sub End Module