How to force WebRequest to send Authorization header during POST

前端 未结 3 1057
醉梦人生
醉梦人生 2020-12-09 08:54

When using WebRequest to send a POST, the Authorization header is not sent with the request even though I have manually set the header and set PreAuthenticate to true, eg:

相关标签:
3条回答
  • 2020-12-09 09:09

    Try this, but there should be no space between the authorization headers.

    var authHeader = "OAuth  oauth_consumer_key=bFPD...";
    webRequest.Headers.Add("Authorization", authHeader);
    
    0 讨论(0)
  • 2020-12-09 09:11

    Here's my solution. The value is in variable json.

    var myUri = new Uri(fullpath);
    var myWebRequest = WebRequest.Create(myUri);
    var myHttpWebRequest = (HttpWebRequest)myWebRequest;
    myHttpWebRequest.PreAuthenticate = true;
    myHttpWebRequest.Headers.Add("Authorization", "Bearer " + AccessToken);
    myHttpWebRequest.Accept = "application/json";
    
    var myWebResponse = myWebRequest.GetResponse();
    var responseStream = myWebResponse.GetResponseStream();
    if (responseStream == null) return null;
    
    var myStreamReader = new StreamReader(responseStream, Encoding.Default);
    var json = myStreamReader.ReadToEnd();
    
    responseStream.Close();
    myWebResponse.Close();
    
    0 讨论(0)
  • 2020-12-09 09:22

    This drove me bonkers, but eventually found the answer in Adding Headers and Post data in RESTfull/HTTP Request in C#.

    The solution for me was adding the Authorization Header BEFORE writing the request stream.

    Hope this helps.

    0 讨论(0)
提交回复
热议问题