A
Anonieko Ramos
Blogger has posted this code:
===============================
using System;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Web.Services.Protocols;
using System.Xml;
public class AtomClient {
public static void Main(string[] arg) {
if (arg.Length != 3) {
Console.WriteLine("Usage: AtomClient user password url");
return;
}
string user = arg[0];
string password = arg[1];
string url = arg[2];
// Create a blog entry
entryType blog = new entryType();
blog.issued = DateTime.Now;
blog.title = "First Post!";
// Author
blog.author = new authorType();
blog.author.name = "Sam Ruby";
blog.author.url = "http://www.intertwingly.net/blog/";
// Generator
blog.generator = new generatorType();
blog.generator.url = "http://www.intertwingly.net/blog/";
blog.generator.Value = "WSDL C# Client";
// Fill in the content
XmlDocument d = new XmlDocument();
d.InnerXml = "<div xmlns='http://www.w3.org/1999/xhtml'>Hello World!</div>";
blog.content = new contentType[1];
blog.content[0] = new contentType();
blog.content[0].mode = contentTypeMode.xml;
blog.content[0].type = "application/xhtml+xml";
blog.content[0].Any = new XmlNode[1];
blog.content[0].Any[0] = d.DocumentElement;
// Create an 'atom' authorization header
Security auth = new Security();
UsernameToken unt = 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
SHA1 md = new SHA1CryptoServiceProvider();
string v = auth.UsernameToken.Nonce + auth.UsernameToken.Created + password;
byte[] digest = md.ComputeHash(Encoding.Default.GetBytes(v));
auth.UsernameToken.Password=new passwordType();
auth.UsernameToken.Password.Value=Convert.ToBase64String(digest);
auth.UsernameToken.Password.Type="wsse
asswordDigest";
auth.UsernameToken.Password.AnyAttr=new XmlAttribute[1];
auth.UsernameToken.Password.AnyAttr[0]=d.CreateAttribute("wsse
laceholder",
"http://schemas.xmlsoap.org/ws/2002/07/secext");
try {
// Post the request
AtomAPI api = new AtomAPI();
api.SecurityValue = auth;
api.Url = url;
api.POST(ref blog);
} catch (SoapException fault) {
System.Console.WriteLine(fault.Message);
} catch (WebException httpStatus) {
System.Console.WriteLine(httpStatus.Message);
}
}
}
===============================
using System;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Web.Services.Protocols;
using System.Xml;
public class AtomClient {
public static void Main(string[] arg) {
if (arg.Length != 3) {
Console.WriteLine("Usage: AtomClient user password url");
return;
}
string user = arg[0];
string password = arg[1];
string url = arg[2];
// Create a blog entry
entryType blog = new entryType();
blog.issued = DateTime.Now;
blog.title = "First Post!";
// Author
blog.author = new authorType();
blog.author.name = "Sam Ruby";
blog.author.url = "http://www.intertwingly.net/blog/";
// Generator
blog.generator = new generatorType();
blog.generator.url = "http://www.intertwingly.net/blog/";
blog.generator.Value = "WSDL C# Client";
// Fill in the content
XmlDocument d = new XmlDocument();
d.InnerXml = "<div xmlns='http://www.w3.org/1999/xhtml'>Hello World!</div>";
blog.content = new contentType[1];
blog.content[0] = new contentType();
blog.content[0].mode = contentTypeMode.xml;
blog.content[0].type = "application/xhtml+xml";
blog.content[0].Any = new XmlNode[1];
blog.content[0].Any[0] = d.DocumentElement;
// Create an 'atom' authorization header
Security auth = new Security();
UsernameToken unt = 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
SHA1 md = new SHA1CryptoServiceProvider();
string v = auth.UsernameToken.Nonce + auth.UsernameToken.Created + password;
byte[] digest = md.ComputeHash(Encoding.Default.GetBytes(v));
auth.UsernameToken.Password=new passwordType();
auth.UsernameToken.Password.Value=Convert.ToBase64String(digest);
auth.UsernameToken.Password.Type="wsse

auth.UsernameToken.Password.AnyAttr=new XmlAttribute[1];
auth.UsernameToken.Password.AnyAttr[0]=d.CreateAttribute("wsse

"http://schemas.xmlsoap.org/ws/2002/07/secext");
try {
// Post the request
AtomAPI api = new AtomAPI();
api.SecurityValue = auth;
api.Url = url;
api.POST(ref blog);
} catch (SoapException fault) {
System.Console.WriteLine(fault.Message);
} catch (WebException httpStatus) {
System.Console.WriteLine(httpStatus.Message);
}
}
}