title: Can gRPC support `x-www-form-encoded` data?
body: <p>I am trying to accept a POST request from an external service, but the data is <code>x-www-form-encoded</code> data. Our system is gRPC, but we use <a href="https://github.com/grpc-ecosystem/grpc-gateway" rel="nofollow noreferrer">grpc-gateway</a> to pass json rest requests. </p>
  
  <p>If I add to following to my <code>.proto</code> file</p>
  
  <pre><code>rpc Action(ActionRequest) returns (ActionResponse) {
      option (google.api.http) = {
          post: "/v1/action"
          body: "*"
      };
  }
  </code></pre>
  
  <p>Any messages I try and create will fail with </p>
  
  <pre><code>`invalid character 'p' looking for beginning of value - Error: rpc error: code = InvalidArgument desc = invalid character 'p' looking for beginning of value`
  </code></pre>
  
  <p>This makes sense as 'p' is the first character of the <code>x-www-form-encoded</code> data (payload is the object name).</p>
  
  <p>It would so far appear I don't have access to the raw request body, and it seems it may be possible with a custom marshaller that feels like overkill, and probably out of scope.</p>
  
  <p>However I cannot for the life of me see how to access this data. I <a href="https://github.com/googleapis/googleapis/blob/master/google/api/httpbody.proto" rel="nofollow noreferrer">have tried adding another proto from googleapis</a>. However I have found the documentation for this aspect of gRPC difficult to follow and I may be doing it wrong.</p>