#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.