title: How do I use FormUrlEncodedContent for complex data types?
body: <p>I need to interact with a third party endpoint that only accepts form encoded payloads.  The endpoint wants complex data types at this endpoint, meaning something like this (but form encoded, not JSON):</p>
  
  <pre><code>{
      "foo": "bar",
      "baz": {
          "zip": "zap"
      }
  }
  </code></pre>
  
  <p>My googling and the docs for the endpoint indicates that this should be form encoded like this:</p>
  
  <pre><code>foo=bar&amp;baz[zip]=zap
  </code></pre>
  
  <p>I am using <code>HttpClient</code> and I want to use <code>FormUrlEncodedContent</code> but when I do it is replacing my <code>[]</code> with escaped characters.</p>
  
  <pre><code>public class Tests
  {
      [Fact]
      public void Test()
      {
          var content = new Dictionary&lt;String, String&gt;
          {
              { "foo", "bar" },
              { "baz[zip]", "zap" }
          };
          var formContent = new FormUrlEncodedContent(content);
          Assert.Equal("foo=bar&amp;baz[zip]=zap", formContent.ReadAsStringAsync().Result);
      }
  }
  </code></pre>
  
  <p>What I end up with instead is:</p>
  
  <pre><code>foo=bar&amp;baz%5Bzip%5D=zap
  </code></pre>