Мое приложение нацелено на Windows CE; он использует компактную структуру
Я скопировал некоторый работающий в другом месте код, который использует WebClient, но он не компилируется, говоря: «Не удалось найти имя типа или пространства имен «WebClient» (вы пропустили директиву using или ссылку на сборку?) "
У меня есть «использование System.Net»;
Из-за этой ошибки я также получаю сообщение "Имя HttpRequestHeader не существует в текущем контексте"
Код:
private static void SendXMLFile(string xmlFilepath, string uri)
{
using (var client = new WebClient())
{
client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
StringBuilder sb = new StringBuilder();
using (StreamReader sr = new StreamReader(xmlFilepath))
{
String line;
while ((line = sr.ReadLine()) != null)
{
sb.AppendLine(line);
}
}
// I don't know why the prepended equals sign is necessary, but it is
string allLines = "=" + sb.ToString();
var result = client.UploadString(uri, "POST", allLines);
}
}
Если WebClient доступен для моего сценария, какая ссылка/использование мне нужна?
Если WebClient недоступен для моего сценария, какой существует выход/замена?
Если нет помощи/замены, кто может/пришлет мне бутылку Blackberry Brandy?
ОБНОВИТЬ
Я пытаюсь адаптировать ответ к своей ситуации, но сразу же сталкиваюсь с проблемой:
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(uri);
request.Method = method;
Проблема в том, что "метод" не распознается (получает случай с красными волнистыми линиями и "Имя "метод" не существует в текущем контексте"
ОБНОВЛЕНИЕ 2
Я вижу - метод - это переданная строка; что мне нужно:
request.Method = "POST";
ОБНОВЛЕНИЕ 3
Я еще не уверен, что это действительно сработает, но оно компилируется и, кажется, имеет смысл, поэтому я попробую:
private static string SendXMLFile(string xmlFilepath, string uri, int timeout)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
request.Method = "POST";
StringBuilder sb = new StringBuilder();
using (StreamReader sr = new StreamReader(xmlFilepath))
{
String line;
while ((line = sr.ReadLine()) != null)
{
sb.AppendLine(line);
}
byte[] postBytes = Encoding.UTF8.GetBytes(sb.ToString());
if (timeout < 0)
{
request.ReadWriteTimeout = timeout;
request.Timeout = timeout;
}
request.ContentLength = postBytes.Length;
request.KeepAlive = false;
request.ContentType = "application/x-www-form-urlencoded";
try
{
Stream requestStream = request.GetRequestStream();
requestStream.Write(postBytes, 0, postBytes.Length);
requestStream.Close();
using (var response = (HttpWebResponse)request.GetResponse())
{
return response.ToString();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
request.Abort();
return string.Empty;
}
}
}