Составить запрос для отправки на сервер, по инструкции - C#

Узнай цену своей работы

Формулировка задачи:

Народ, помогите составить, вот как выглядит описание:
Адрес обращения : 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());
            }
        }
    }
Как дальше отправлять запрос? Нужно авторизоваться отправляя xmlText. Как описать тип авторизации PLAIN и Content-Charset: UTF-8?

Решение задачи: «Составить запрос для отправки на сервер, по инструкции»

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());
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы