title: How to send and receive Complex object in web api
body: <p>IDE: Visual Studio 2012  </p>
  
  <p>I have controller as follows:  </p>
  
  <pre><code>public class MyController: ApiController
  {
  
    public IHttpActionResult AddMyControllerInfo([FromBody]Dictionary&lt;string, string&gt; dictCustomer)  
    {
       //Some logic...
        return Ok("Success");  
    }
  }  
  </code></pre>
  
  <p>And it is being called from client project:  </p>
  
  <p>Calling code is as follows:</p>
  
  <pre><code>internal static void SendInfoToMyController(Dictionary&lt;string, string&gt; dictCustomer)
      {
  
          string jsDict = Utilities.SerializeToJson&lt;Dictionary&lt;string, string&gt;&gt;(dictCustomer);
          string js = Utilities.MakeRequest_Post("/api/AddMyControllerInfo", jsDict);
  
      }  
  </code></pre>
  
  <p>and here is Make request function:  </p>
  
  <pre><code>internal static string MakeRequest_Post(string sURL, string formData)
      {
          try
          {
  
              sURL = ConfigurationManager.AppSettings["ServerApiPath"] + sURL;
  
  
              using (var client = new WebClient())
              {
                  client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
                  var result = client.UploadString(sURL, "POST", "=" + formData);
              }
          }
          catch (Exception ex)
          {
  
          }
          return "";
      }  
  </code></pre>
  
  <p>Above code is working fine when I receive the [FromBody] parameter data in the form of string (json format) datatype, and deserialize it to dictionary form.  </p>
  
  <p>but in above scenario I am receiving dictionary object as null.   </p>
  
  <p>Can you tell me how to receive the complex object at web api, for above scenario.</p>