title: curl wsdl soap error - mismatched Actions between sender and receiver
body: <p>I am trying to post the curl based soap request to url using c API's. My libcurl version is curl 7.30.0 (i686-pc-linux-gnu) libcurl/7.30.0 OpenSSL/1.0.0 zlib/1.2.5.I am receiving the below error.Also below code i am using to post the request.i am using correct soap action aswell "GetAuthToken", Why this error is happening while posting the request.Thanks in advance.</p>
  
  <p>Error:
  The message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver.  Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None)</p>
  
  <p>Request:
           123456789</p>
  
  <p>url:
  <a href="http://x.xx.xx.xxx:20003/HIMS/SecurityService/?wsdl" rel="nofollow">http://x.xx.xx.xxx:20003/HIMS/SecurityService/?wsdl</a></p>
  
  <p>Sample code:</p>
  
  <p>int main()
  {</p>
  
  <pre><code>    CURL *curl;
  
      CURLcode res;
  
      struct curl_slist *headers = NULL;
  
      FILE *out_fd = (FILE *) 0;
  
      char errorbuf[300]="",filename[32]="Response.txt";
  
      char errmsg[256];
  
      int Timeout=120;
  
      int buffer_size = 0;
  
      char urlbuff[100]="";
  
      char buff[128] = "http://x.xx.xx.xxx:20003/HIMS/SecurityService/?wsdl";
  
      memset(urlbuff,0,sizeof(urlbuff));
  
      curl = curl_easy_init();
  
      buffer_size = strlen(buffer);
      if(curl)
      {
  
              out_fd = fopen (filename, "w");
              curl_easy_setopt(curl, CURLOPT_FILE, out_fd);
              headers = curl_slist_append(headers, "Content-type:text/xml;charset=utf-8; SOAPAction=GetAuthToken");
              sprintf(urlbuff,"%s",buff);
  
              curl_easy_setopt(curl, CURLOPT_URL, urlbuff);
              Timeout=2000;
  
              curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0);
              curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
              curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
              curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, buffer_size);
  
              curl_easy_setopt(curl, CURLOPT_POSTFIELDS, buffer);
  
              curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
              curl_easy_setopt(curl, CURLOPT_TIMEOUT, Timeout);
              curl_easy_setopt(curl, CURLOPT_ERRORBUFFER,errmsg);
  
              res = curl_easy_perform(curl);
              curl_slist_free_all(headers);
              curl_easy_cleanup(curl);
              fclose(out_fd);
              if(CURLE_OK != res)
              {
                      printf("\nerrorbuf:%s:%d\n",errorbuf,res);
                      return -1;
              }
              return 0;
      }
  </code></pre>
  
  <p>}</p>