Составить запрос для отправки на сервер, по инструкции - 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());
}
}
}
}