title: WCF WebInvoke with query string parameters AND a post body
body: <p>I'm fairly new to web services and especially WCF so bear with me.</p>
  
  <p>I'm writing an API that takes a couple of parameters like username, apikey and some options, but I also need to send it a string which can be a few thousands words, which gets manipulated and passed back as a stream. It didn't make sense to just put it in the query string, so I thought I would just have the message body POSTed to the service.</p>
  
  <p>There doesn't seem to be an easy way to do this...</p>
  
  <p>My operation contract looks like this</p>
  
  <pre><code>[OperationContract]
  [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare,
  UriTemplate="Method1?email={email}&amp;apikey={apikey}"+
  "&amp;text={text}&amp;quality={qual}", BodyStyle = WebMessageBodyStyle.Bare)]
  Stream Method1(string email, string apikey, string text, string qual);
  </code></pre>
  
  <p>And this works. But it is the 'text' parameter I want to pull out and have in the post body. One thing I read said to have a stream as another parameter, like this:</p>
  
  <pre><code>Stream Method1(string email, string apikey, string qual, Stream text);
  </code></pre>
  
  <p>which I could then read in. But that throws an error saying that if I want to have a stream parameter, that it has to be the only parameter.</p>
  
  <p>So how can I achieve what I am trying to do here, or is it no big deal to send up a few thousand words in the query string?</p>