public string FormsAuth(Uri url, string username, string password) { var response = DownloadData(url); INode document = new Babelfish.HTML.HTMLDocument(Encoding.ASCII.GetString(response)); var postData = string.Empty; var formElements = document.Find(n => n.Name.ToLower() == "input" && new[] { "hidden", "button", "submit", "checkbox", "radio", "text", "password" } .Contains(n.Attributes["type"])); foreach (var formElement in formElements) { postData += postData.Length > 0 ? "&" : string.Empty; var name = formElement.Attributes["name"]; var value = formElement.Attributes["value"]; switch (formElement.Attributes["type"]) { case "text": postData += string.Format("{0}={1}", name, HttpUtility.UrlEncode(username)); break; case "password": postData += string.Format("{0}={1}", name, HttpUtility.UrlEncode(password)); break; default: if (!string.IsNullOrEmpty(value)) postData += string.Format("{0}={1}", name, HttpUtility.UrlEncode(value)); break; } } Headers.Add("Content-Type", "application/x-www-form-urlencoded"); string result; try { result = Encoding.ASCII.GetString(UploadData(url, "POST", Encoding.ASCII.GetBytes(postData))); } catch (WebException ex) { result = ex.ToString(); } return result; }
public void ExpectItToReturnHtmlContaining(string notation) { var left = new Babelfish.HTML.HTMLDocument(notation); var right = new Babelfish.HTML.HTMLDocument(WebServiceMethodResult as string); left.AssertMemberEquality(right); }