Member 12804059 Ответов: 0

400 неверный запрос : в XML-документе (1, 1254) имеется сообщение об ошибке с неверным номером строки


Я отправляю запрос на внешний API из своего приложения с помощью HttpWebRequest и HttpWebResponse.

Всякий раз, когда возникает ошибка в XML-запросе из-за некоторых неправильных значений, переданных в XML-узлах, то появляется 400 плохих ответов на ошибку запроса и сообщение об ошибке "есть ошибка в XML-документе (51, 14)". Проблема заключается в том, что при наличии ошибки в XML-запросе xml-ответ должен отображать сообщение об ошибке с правильным номером строки. но я получаю сообщение об ошибке с неправильным номером строки, и это всегда "есть ошибка в XML-документе (1, 1254)". На самом деле в строке 1 нет никакой ошибки. Из - за этой проблемы у меня нет возможности указать на ошибку при устранении неполадок.

Не могли бы вы помочь мне получить ответ с правильным номером строки в XML?

Спасибо

Что я уже пробовал:

Ниже приведен мой код в VB, чтобы отправить запрос к API.

Dim Wreq Как HttpWebRequest
Dim MyURI As String = Строка.Пустой
Dim bytes() как байт
Попробуй
MyURI = p_strURL
Wreq = HttpWebRequest.Создать(MyURI)
Рек.Метод = "сообщение"
байт = система.Текст.Кодирование.Кодировке utf8.Метод getbytes(pi_strRequestXML)
Рек.ContentLength = байты.Длина 'pi_strRequestXML.Length
Рек.ContentType = "application/x-www-form-urlencoded"
Рек.Сообщения Keepalive = Ложь
Рек.Headers.Add("Authorization", "bearer" + "" + strAccessToken)
Через OutputStream Как Модулю Записи StreamWriter = Новая Модулю Записи StreamWriter(Wreq.Метод getrequeststream())
Выходной поток.Писать(pi_strRequestXML)
Конец Использования

Использование Wres В Качестве HttpWebResponse = Wreq.метод GetResponse()
Использование loResponseStream в качестве StreamReader = New StreamReader(Wres.GetResponseStream())
oResponse = loResponseStream.ReadToEnd()
Конец Использования
Конец Использования
Вернуться oResponse
Поймать е в качестве исключения webexception
Бросать
Поймать objSysEx как исключение
Бросать
Окончательно

Конец Попытки

Peter_in_2780

Это выглядит как окончание строки (cr? crlf? lf?) удаляются из XML где-то по пути. Проверьте, что именно вы посылаете.

Richard Deeming

Catch e As WebException
    Throw e
Catch objSysEx As Exception
    Throw objSysEx


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

Если ты действительно нужно повторно выбросить исключение, использовать Throw, нет Throw ex:
Catch e As WebException
    Throw
Catch objSysEx As Exception
    Throw


Но в этом случае, поскольку вы ничего не делаете с исключениями, вы должны просто удалить Try..Catch..Finally блокируйте, и пусть исключения распространяются на вызывающий метод.

0 Ответов