Преобразование между типом объекта FileWebRequest в HttpRequest - PullRequest
1 голос
/ 27 февраля 2012

Добрый вечер, ребята

Я новичок в этом форуме, и мне нужно, чтобы вы мне помогли

Я работаю над проектом, который отправляет файл XML, и я использую HTTPRequest, я столкнулся с такой ошибкой:

Невозможно привести объект типа 'System.net.FileWebRequest' к типу 'System.net.HTTPWebrequest'

! [Введите описание изображения здесь] [1]

public string POST(string URL, string MsgXML)
{
  string Response = null;
  try
  {

    Request = (HttpWebRequest)HttpWebRequest.Create(URL);
    Request.Method = "POST";
    Request.ContentType = "text/xml";
    byte[] bodyBytes = Encoding.UTF8.GetBytes(MsgXML);
    Request.GetRequestStream().Write(bodyBytes, 0, bodyBytes.Length);
    Request.GetRequestStream().Close();

    using (var res = (HttpWebResponse)Request.GetResponse() as HttpWebResponse)
    {
      StreamReader Rdr = new StreamReader(res.GetResponseStream());
      Response = Rdr.ReadToEnd();
      Rdr.Close();
      Rdr = null;
      return Response;
    }
  }
}

И этот метод публикации я использовал.

И я не знаю, что делать, пожалуйста, помогите мне, ребята:)

1 Ответ

2 голосов
/ 27 февраля 2012

С WebRequest.Create, который является фактическим методом, который вы вызываете (компилятор позволяет вам избежать вызова статического метода «через» производный класс):

[..] когда передается URI, начинающийся с http: // или https: // requestUri, HttpWebRequest возвращается Create. Если URI начиная с ftp: // вместо этого передается метод Create экземпляр FileWebRequest. Если передан URI, начинающийся с file: // вместо этого метод Create возвращает экземпляр FileWebRequest.

У вас есть два варианта, в основном:

  1. Напишите ваш метод, чтобы он работал для любого типа URI, включая файловые ресурсы.
  2. Проверьте, что строка представляет URI, который является ресурсом, доступ к которому осуществляется через http (например, с Uri.Scheme).
...