简体   繁体   中英

How to set cookie in request header for REST service

I am developing webservice which calls REST service and as per requirement I need to set cookie in the request header. EVen if I set everything , it gives me "401 Unauthorized message" as response.

 var request = (HttpWebRequest)HttpWebRequest.Create("https://TESTRestAPI/service/1/sub");
 request.Headers.Add("Authorization", "Basic" + Encoded);
 request.Method = "GET";
 request.ContentType = "application/json";
 var response = (WebResponse)request.GetResponse();

So far I tried this :-
1. request.Headers["Cookie"] = "BasicAuth=fromTest";
2. request.CookieContainer = new CookieContainer();
   Uri target = new Uri("https://TESTRestAPI/service/1/sub"););
   Cookie ck = new Cookie("BasicAuth","fromTest") { Domain = target.Host };

This is first time I am calling REST service, any help appreciated.

this code is to authenticate an http request by using basic authentication, with some Username and Password

 byte[] credentialBuffer = new UTF8Encoding().GetBytes(username + ":" + password);
 string authToken = Convert.ToBase64String(credentialBuffer);
 string authHeaderValue = string.Format(System.Globalization.CultureInfo.InvariantCulture, "Basic {0}", authToken);
 HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create("https://TESTRestAPI/service/1/sub");
 request.Headers.Add(HttpRequestHeader.Authorization, authHeaderValue);

Additionaly, if it is required that the request contains some cookie with some name and some value, Id' use your code number 2.

 CookieContainer requestCookieContainer = new CookieContainer();
 Cookie requiredCookie = new Cookie("BasicAuth", "fromTest");
 requiredCookie.Domain = "https://TESTRestAPI/service/1/sub";
 requiredCookieContainer.Add(requiredCookie);
 request.CookieContainer = requestCookieContainer;

If your application runs on IIS, the config file may need some lines. I think basic authentication is disabled by default, as it isn't too much safe.

 <system.webServer>
    <security>
       <authentication>
          <basicAuthentication enabled="true"/>
       </authentication>
    </security>
  </system.webServer> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM