Удаленный сервер вернул ошибку: (403) Запрещено при отправке XML-данных

#c# #asp.net-web-api

#c# #asp.net-web-api

Вопрос:

Я получаю ошибку

Удаленный сервер вернул ошибку: (403) Запрещено.

при отправке некоторых XML-данных в api. Ниже приведен код. Я прочитал некоторые другие вопросы из stack overflow, но это не исправлено.

 public static XmlDocument PlaceOrder(string Url, string Method, string payload)
{

    Encoding enc = System.Text.Encoding.GetEncoding(1252);
    HttpWebRequest apiCall = (HttpWebRequest)WebRequest.Create(Url);

    byte[] byteArray = ASCIIEncoding.UTF8.GetBytes(payload);
    apiCall.Accept = "*/*";
    apiCall.KeepAlive = false;
    apiCall.AllowAutoRedirect = false;
    apiCall.Method = "POST";
    apiCall.ContentType = "text/xml; encoding='utf-8'";
    apiCall.ContentLength = byteArray.Length;
    apiCall.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36";
    apiCall.Headers.Add("Accept-Encoding", "gzip, deflate, br");
    apiCall.Headers.Add("Accept-Language", "en-US,en;q=0.8");
    apiCall.CookieContainer = new CookieContainer();
    apiCall.UseDefaultCredentials = true;

    apiCall.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
    Stream dataStream = apiCall.GetRequestStream();
    dataStream.Write(byteArray, 0, byteArray.Length);
    dataStream.Close();

    HttpWebResponse webresponse;
    webresponse = (HttpWebResponse)apiCall.GetResponse();

    StreamReader loResponseStream = new StreamReader(webresponse.GetResponseStream(), enc);
    string response = loResponseStream.ReadToEnd();

    XmlDocument toReturn = new XmlDocument();
    toReturn.LoadXml(response);

    return toReturn;
}
  

Комментарии:

1. Это может произойти, когда ваш ip заблокирован сервером. Поэтому попробуйте из другого места

2. Я пробовал это в 3 разных местах.

3. Подробности об этой ошибке можно найти в документации api рядом с типом выполняемой вами публикации

4. На какой сервер вы отправляете? Попробуйте получить доступ к его журналам, если это находится под вашим контролем, если это не запрос от команды, поддерживающей это

5. Спасибо, Иван, это сторонний API, и я могу успешно отправить свои данные с помощью DHC rest client.