Следующий код был реализован, чтобы получить JsessioniD из Cookies. WebSite использует проверку подлинности.Клиент Odata с Cookie
Вот что я реализовал.
public override void ViewDidLoad()
{
base.ViewDidLoad();
using(var client= new CookieAwareWebClient())
{
var values= new NameValueCollection
{
{"username","admin"},
{"password","admin"},
};
client.UploadValues("myURL/j_security_check",values);
Cookie jSessionID = client.ResponseCookies["JSESSIONID"];
if (jSessionID != null)
{
// get the JEssionID here
string value = jSessionID.Value;
}
};
}
public class CookieAwareWebClient : WebClient
{
public CookieAwareWebClient()
{
CookieContainer = new CookieContainer();
this.ResponseCookies = new CookieCollection();
}
public CookieContainer CookieContainer { get; private set; }
public CookieCollection ResponseCookies { get; set; }
protected override WebRequest GetWebRequest(Uri address)
{
var request = (HttpWebRequest)base.GetWebRequest(address);
request.CookieContainer = CookieContainer;
return request;
}
protected override WebResponse GetWebResponse(WebRequest request)
{
var response = (HttpWebResponse)base.GetWebResponse(request);
this.ResponseCookies = response.Cookies;
return response;
}
}
Я получаю JSessionID, и теперь у меня вопрос, как сделать вызов клиенту odata с заголовком файла cookie?
В чем проблема, которую вы пытаетесь решить? Похоже, вы пытаетесь интегрироваться с приложением ASP.NET с проверкой подлинности форм, это правильно? – timothyclifford
Я пытаюсь получить доступ к веб-странице, которая требует проверки подлинности на основе форм. Я получаю файлы cookie и пытаюсь получить доступ к защищенной одате с добавлением заголовка cookie для получения данных. – casillas
ОК, поэтому вы отправляете заявку на вход в систему, получая файл cookie auth, а затем используя это для будущих запросов? – timothyclifford