Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accepting form fields via HTTP Post in WCF

I need to accept form data to a WCF-based service. Here's the interface:

[OperationContract]
[WebInvoke(UriTemplate = "lead/inff",
    BodyStyle = WebMessageBodyStyle.WrappedRequest)]
int Inff(Stream input); 

Here's the implementation (sample - no error handling and other safeguards):

public int Inff(Stream input)
{

    StreamReader sr = new StreamReader(input);
    string s = sr.ReadToEnd();
    sr.Dispose();

    NameValueCollection qs = HttpUtility.ParseQueryString(s);
    Debug.WriteLine(qs["field1"]);
    Debug.WriteLine(qs["field2"]);

    return 0;
}

Assuming WCF, is there a better way to accomplish this besides parsing the incoming stream?

like image 722
BryanB Avatar asked Sep 29 '08 02:09

BryanB


1 Answers

I remember speaking to you about this at DevLink.

Since you have to support form fields the mechanics of getting those (what you are currently doing) don't change.

Something that might be helpful, especially if you want to reuse your service for new applications that don't require the form fields is to create a channel that deconstructs your stream and repackages it to XML/JSON/SOAP/Whatever and have your form clients communicate with the service through that while clients that don't use forms can use another channel stack. Just an idea...

Hope that helps. If you need help with the channel feel free to let me know.

like image 173
James Bender Avatar answered Oct 21 '22 00:10

James Bender