Got a .NET/C# question...
I need to parse some input post data thats in a "multipart/form-data" format to extract the passed username and password. Anyone know how to do this without writing my own parsing code?
Note the input post data looks something like this:
---------1075d313df8d4e1d
Content-Disposition: form-data; name="username"
[email protected]
---------1075d313df8d4e1d
Content-Disposition: form-data; name="password"
somepassword
---------1075d313df8d4e1d--
To demostrate my code looks something like this at the moment:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "Login", BodyStyle = WebMessageBodyStyle.Bare)]
public Stream Login(Stream input)
{
string username = String.Empty;
string password = String.Empty;
StreamReader sr = new StreamReader(input);
string strInput = sr.ReadToEnd();
sr.Dispose();
// Help needed here:
usermame = ?.Parse(strINput, "username");
password = ?.Parse(strINput, "password");
// blah blah blah return login XML response as a Stream
}
Marc's got it. The easiest way to use the ASP.NET compatibility requirements mode is to apply the AspNetCompatibilityRequirementsMode attribute on your operation. Then you have access to the HttpContext form params. Here's how you'd go about it:
[OperationContract]
[WebInvoke(Method = "POST",
UriTemplate = "Login",
BodyStyle = WebMessageBodyStyle.Bare)]
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Required)]
public Stream Login(Stream input)
{
string username = HttpContext.Current.Request.Params["username"];
string password = HttpContext.Current.Request.Params["password"];
}
Could you not post to a regular ASP.NET page (perhaps an ashx/handler, or MVC) and just use Request.Form
? This supports multi-part.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With