HttpWebRequest.GetResponse() выдает ошибку 400 «Неверный запрос»C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 HttpWebRequest.GetResponse() выдает ошибку 400 «Неверный запрос»

Сообщение Anonymous »

Ниже приведен пример кода с (измененными фактическим URL-адресом и учетными данными)

ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback((object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) => { return true; });

var requestUri = new Uri("https://example.com/path1/path2?var=somevar");

byte[] data = Encoding.UTF8.GetBytes("DEV72*12/27/06*TAYLOR*RICH*JOE*10/28/56*U0999495102*466666666*01*TAYLOR*TAMMY*M*10/26/52***CIGNA HMO*62308*UPIN*MEDICAL CENTER**MESSAGE*M*F*30");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri);
request.PreAuthenticate = true;
request.UseDefaultCredentials = false;
request.Credentials = new NetworkCredential("UUUSSSEEERR", "PASSWORD");
request.ContentLength = data.Length;
request.ContentType = "text/plain";
request.Method = "POST";

using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
stream.Flush();
}

StreamReader streamReader = null;

string result;
try
{
streamReader = new StreamReader(request.GetResponse().GetResponseStream());
result = streamReader.ReadToEnd();
}
finally
{
streamReader.Close();
}

txtOutput.Text = result;


Он всегда выдает исключение неправильного запроса при первом запуске, но когда я возвращаю курсор в отладчике на первую строку, он работает нормально и дает правильный ответ в txtOutput.text и то же самое поведение в отдельном приложении, в первый раз выдается исключение, но во второй раз все работает нормально, может кто-нибудь подсказать мне решение или сообщить, что я здесь делаю не так.
используя .net 4.0.
Обновление:

например, у меня работает следующий код, но это не тот обходной путь, который я ищу, я просто добавлен цикл while, перехватывающий WebException, и если его statusCode равен 400, я повторяю код, и он работает

var requestUri = new Uri("https://example.com/path1/path2?var=somevar");

ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback((object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) => { return true; });

byte[] data = Encoding.UTF8.GetBytes("DEV72*12/27/06*TAYLOR*RICH*JOE*10/28/56*U0999495102*466666666*01*TAYLOR*TAMMY*M*10/26/52***CIGNA HMO*62308*UPIN*MEDICAL CENTER**MESSAGE*M*F*30");
HttpWebRequest request = null;
int counter = 0;
do
{
request = (HttpWebRequest)WebRequest.Create(requestUri);

request.PreAuthenticate = true;
request.UseDefaultCredentials = false;
request.Credentials = new NetworkCredential("USERNAME", "password");
request.ContentLength = data.Length;
request.ContentType = "text/plain";
request.Method = "POST";

using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
stream.Flush();
}

StreamReader streamReader = null;

string result = string.Empty;
try
{
streamReader = new StreamReader(request.GetResponse().GetResponseStream());
result = streamReader.ReadToEnd();
}
catch (WebException ex)
{
HttpWebResponse response = (HttpWebResponse)ex.Response;
if (response.StatusCode == HttpStatusCode.BadRequest)
{
counter++;
}
else
{
txtOutput.Text = ex.ToString();
}
}
finally
{
if(streamReader != null) streamReader.Close();
}

txtOutput.Text = result;

} while (counter == 1);


Подробнее здесь: https://stackoverflow.com/questions/116 ... -400-error
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Httpwebrequest.getResponse () бросает «плохой запрос» 400 ошибка
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Удаленный сервер возвратил ошибку: (401) Несанкционировано в System.Net.HttpWebRequest.GetResponse().
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Удаленный сервер вернул ошибку: (401) Неавторизован в System.net.httpwebrequest.getResponse ()
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Модуль Biopython Entrez EFetch выдает ошибку HTTP 400: неверный запрос
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Модуль Biopython Entrez EFetch выдает ошибку HTTP 400: неверный запрос
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»