Search code examples
c#asp.nethttp-postraw

I try API request post with body type raw to get a token but need understand what is wrong


My method to get tokenKey is :

        HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
        httpRequest.Method = "POST";
        httpRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36 OPR/52.0.2871.99";

        string tokenResponse = null;

        HttpClient client = new HttpClient();

        HttpResponseMessage response = null;
        try
        {
            client.DefaultRequestHeaders.Add("x-api-key", "key");
            if (method.Equals("POST"))
            {

                httpRequest.Accept = "application/json";
                httpRequest.ContentType = "application/json";

                var data = @"{""username"":@"""+ login + @""",""password"" :@"""+ password + @"""}";

                using (var streamWriter = new StreamWriter(httpRequest.GetRequestStream()))
                {
                    streamWriter.Write(data);
                }

                var httpResponse = (HttpWebResponse)httpRequest.GetResponse();
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                  tokenResponse = streamReader.ReadToEnd();
                }
            }
       }
catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }

        return tokenResponse;

after var httpResponse = (HttpWebResponse)httpRequest.GetResponse(); this error msg: The underlying connection was closed: Unexpected error on a send.

x-api-key is okay but i don't put the original as the username and password i do it easy with postman postman request done

Can anyone help me understand where I'm going wrong?


Solution

  • Could this be a case of mismatch TLS versions? See this answer here: C# HttpWebRequest The underlying connection was closed: An unexpected error occurred on a send

    Also it looks like your HttpWebRequest won't have the correct headers, because you are setting them on the HttpClient object instead. The HttpClient also doesn't seem to be being used for this call.