Помогите советом. Есть такая ситуация. Надо послать запрос на внешний сервер по https и получить от него xml. В инет выхожу через Proxy. Eсли тестить запрос через браузер, то всё ОК. Результат возращается и отображается. Если через клиента, то вылетает на result = reg.GetResponse(); со словами
System.Net.WebException: The remote server returned an error: (500) Internal Server Error.
at System.Net.HttpWebRequest().GetResponse();
Логи Proxy или внешнего сервера посмотреть не могу. Для меня они чёрный ящик. Вот и не знаю из-за чего падает прога, с учётом того что из браузера всё работает.
Есть следущее:
private void butSend_Click(object sender, EventArgs e)
{
WebResponse result = null;
WebRequest reg = null;
Stream newStream = null;
Stream ReceiveStream = null;
StreamReader sr = null;
try
{
// для проверки сертификата
System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
// Url запрашиваемого скрипта
try
{
Uri newUri = new Uri(SomeHost);
reg = WebRequest.Create(newUri);
}
catch (UriFormatException uriException)
{
MessageBox.Show("Неправильная строка запроса " + uriException);
}
reg.Method = "POST";
reg.PreAuthenticate = true;
reg.Timeout = 120000;
// Proxy через который выхожу в инет
reg.Proxy = new WebProxy("198.1.11.111", 3128);
reg.Proxy.Credentials = new NetworkCredential("UserName", "Pass");
reg.ContentType = "application/x-www-form-urlencoded";
byte[] SomeBytes = null;
SomeBytes = Encoding.Default.GetBytes("ACT=" + ACT + "&USERNAME=" + name + "&PASSWORD=" + pass + "&MSISDN=" + phone);
reg.ContentLength = SomeBytes.Length;
newStream = reg.GetRequestStream();
newStream.Write(SomeBytes, 0, SomeBytes.Length);
newStream.Close();
// считываю результат запроса
result = reg.GetResponse(); // вот тут вылетает !!!
ReceiveStream = result.GetResponseStream();
...
...
catch (Exception ex)
{
MessageBox.Show("Ошибка https запроса \r\n" + ex);
}
...
}
CV>System.Net.WebException: The remote server returned an error: (500) Internal Server Error.
CV>at System.Net.HttpWebRequest().GetResponse();
У меня та же проблема.

Если она решена, то не могли бы Вы поделиться?
Здравствуйте, ChipV, Вы писали:
CV>Помогите советом. Есть такая ситуация. Надо послать запрос на внешний сервер по https и получить от него xml. В инет выхожу через Proxy. Eсли тестить запрос через браузер, то всё ОК. Результат возращается и отображается. Если через клиента, то вылетает на result = reg.GetResponse(); со словами
CV>System.Net.WebException: The remote server returned an error: (500) Internal Server Error.
CV>at System.Net.HttpWebRequest().GetResponse();
CV>Логи Proxy или внешнего сервера посмотреть не могу. Для меня они чёрный ящик. Вот и не знаю из-за чего падает прога, с учётом того что из браузера всё работает.
CV>Есть следущее:
CV>CV>private void butSend_Click(object sender, EventArgs e)
CV> {
CV> WebResponse result = null;
CV> WebRequest reg = null;
CV> Stream newStream = null;
CV> Stream ReceiveStream = null;
CV> StreamReader sr = null;
CV> try
CV> {
CV> // для проверки сертификата
CV> System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
CV> // Url запрашиваемого скрипта
CV> try
CV> {
CV> Uri newUri = new Uri(SomeHost);
CV> reg = WebRequest.Create(newUri);
CV> }
CV> catch (UriFormatException uriException)
CV> {
CV> MessageBox.Show("Неправильная строка запроса " + uriException);
CV> }
CV> reg.Method = "POST";
CV> reg.PreAuthenticate = true;
CV> reg.Timeout = 120000;
CV> // Proxy через который выхожу в инет
CV> reg.Proxy = new WebProxy("198.1.11.111", 3128);
CV> reg.Proxy.Credentials = new NetworkCredential("UserName", "Pass");
CV> reg.ContentType = "application/x-www-form-urlencoded";
CV> byte[] SomeBytes = null;
CV> SomeBytes = Encoding.Default.GetBytes("ACT=" + ACT + "&USERNAME=" + name + "&PASSWORD=" + pass + "&MSISDN=" + phone);
CV> reg.ContentLength = SomeBytes.Length;
CV> newStream = reg.GetRequestStream();
CV> newStream.Write(SomeBytes, 0, SomeBytes.Length);
CV> newStream.Close();
CV> // считываю результат запроса
CV> result = reg.GetResponse(); // вот тут вылетает !!!
CV> ReceiveStream = result.GetResponseStream();
CV> ...
CV> ...
CV> catch (Exception ex)
CV> {
CV> MessageBox.Show("Ошибка https запроса \r\n" + ex);
CV> }
CV> ...
CV> }
CV>
Поставьте Fiddler и посмотрите, что уходит с эксплорера, а что с вашей проги.
Проблемма решена. Вся броблемма была на сервере. Он видеде-ли метод POST не лубит. Только GET ест. Отправляю всё GETом и всё ок. Посмотрел бы я на того админа, кто это сделал.