Составить запрос для отправки на сервер, по инструкции - C#
Формулировка задачи:
Народ, помогите составить, вот как выглядит описание:
Я вот что пока написал:
Как дальше отправлять запрос? Нужно авторизоваться отправляя xmlText.
Как описать тип авторизации PLAIN и Content-Charset: UTF-8?
Адрес обращения : http://cabinet.blabla.ru/public/http/action.php
Формат входных данных :
Content-Type: application/x-www-form-urlencoded
Content-Charset: UTF-8
Тип авторизации : PLAIN (открытым текстом)
Метод отправки запроса : POST
public class SomewhereSender { public void Authorize(string login, string password) { string xmlText = GetAuthorizationXml(login, password); Uri uri = new Uri("http://cabinet.blabla.ru/public/http/action.php"); HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(uri); webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.Method = "POST"; //Что тут дальше-то делать? } private string GetAuthorizationXml(string login, string password) { using (MemoryStream ms = new MemoryStream()) { XmlTextWriter writer = new XmlTextWriter(ms, Encoding.UTF8); writer.WriteStartElement("xml_user"); writer.WriteAttributeString("lgn", login); writer.WriteAttributeString("pwd", password); writer.WriteEndElement(); writer.Close(); UTF8Encoding enc = new UTF8Encoding(); return enc.GetString(ms.ToArray()); } } }
Решение задачи: «Составить запрос для отправки на сервер, по инструкции»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.IO; using System.Net; namespace Wpf_Sender { public class SomewhereSender { public string Send(string login, string password, IList<XXX> somethingList, int ttl) { if (somethingList.Count > 250) throw new ArgumentOutOfRangeException("somethingList не может содержать больше 250 элементов"); string xmlText = GetConfiguredXml(login, password, somethingList, ttl); Uri uri = new Uri("http://cabinet.blabla.ru/public/http/action.php"); HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(uri); webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.Method = "POST"; webRequest.Headers.Add(HttpRequestHeader.ContentEncoding, "UTF-8"); //!!! byte[] postHeaderBytes = Encoding.UTF8.GetBytes(xmlText); string text = null; //знаю, лишнее, просто не до конца класс доведён до ума using (Stream reqStream = webRequest.GetRequestStream()) { reqStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); using (StreamReader sr = new StreamReader(webResponse.GetResponseStream())) text = sr.ReadToEnd(); } return text; } private string GetConfiguredXml(string login, string password, IList<XXX> somethingList, int ttl) { using (MemoryStream ms = new MemoryStream()) { XmlDocument doc = new XmlDocument(); //------- //Составляем Xml документ //------- doc.Save(ms); UTF8Encoding enc = new UTF8Encoding(); return enc.GetString(ms.ToArray()); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д