C# эквивалентен Python requests.session()
Привет,
У меня есть код на Python для доступа к веб-серверу, который требует аутентификации перед доступом к другим ресурсам. Но мне нужно сделать это на C#. Есть ли вокруг какой-нибудь пример C#, работающий аналогично библиотеке запросов Python request?
Заранее большое спасибо.
Код Python аналогичен приведенному ниже:
mySession = requests.Session() url = 'https://some_plce/login' login_info = { "who": "me", "pwd": "don't give it"} mySession.post(url, login_info) ans = mySession.get( "https://some_plce/data", params={ 'param1': __some_param1, 'param2': __some_param2 }) my_precious_data = ans.content.decode('utf8').replace("'", '"')
Что я уже пробовал:
Я уже смог выполнить шаг входа в систему (с помощью POST), используя приведенный ниже код, но мне нужно получить данные.
string Uri = "https://some_plce/login"; string POSTData = $"who={Usr}&pwd={pwd}"; // Usr & Pwd are function parameters. byte[] rawPOSTData = Encoding.UTF8.GetBytes( POSTData ); WebRequest request = WebRequest.Create( Uri ); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = rawPOSTData.Length; using (Stream dataStream = request.GetRequestStream()) { dataStream.Write( rawPOSTData, 0, rawPOSTData.Length ); dataStream.Close(); } using (WebResponse response = request.GetResponse()) { // Do some checks. }
F-ES Sitecore
Измените "POST" на "GET" в методе и поместите параметр в параметр POSTData на URL-адресе. Если вы загуглите, как сделать GET с помощью WebRequest, вы найдете примеры.
V.Lorz
Привет F-ES Sitecore, спасибо за ваш комментарий.
Первый запрос (логин) требует POST, а не GET. А для второго требуется идентификатор сеанса, возвращаемый сервером при первом запросе входа в систему. Может быть, мой вопрос не был самоочевидным, извините за это.
Я уже решил эту проблему, смотрите мой комментарий ниже под решением MadMyche.