Прежде всего, я WEB NOOB. Который, вероятно, объясняет этот вопрос. Во всяком случае, когда я использую web page test app для размещения xml для URL-адреса, все работает нормально. Вот pertinant код с веб-страницы (я думаю):C# Сообщение XML для URL не работает
<form action="/gateway/xml" method="post" id="xml-test-form">
<textarea name="data">
{some xml is in here}
</textarea>
<input type="submit" value="Submit Test" />
</form>
Когда я пытаюсь представить тот же XML с помощью C# (WebRequest или HttpWebRequest) с типом содержимого («текст/XML» или «приложения/x-www-form-urlencoded ") с закодированным буфером (ASCII или UTF8). Я получаю сообщение об ошибке, которое подразумевает, что XML-файл не может быть прочитан на другом конце. Здесь ошибка:
<?xml version="1.0"?>
<SubmitOrdersResponse>
<status code="0">FAILURE</status>
<errors>
<error code="1001">Invalid XML Version</error>
</errors>
</SubmitOrdersResponse>
<br /><b>Warning</b>: DOMDocument::loadXML() [<a href='domdocument.loadxml'>domdocument.loadxml</a>]: Empty string supplied as input in <b>/var/www/vhosts/reports.gogetagrip.com/httpdocs/application/models/Gateway.php</b> on line <b>90</b><br />
я могу воспроизвести эту ошибку с помощью веб-тестера, удалив XML-элемент с именем. Я думаю, что это первый проверенный элемент и, следовательно, ошибка INVALID XML VERSION. Я думаю, что то, что происходит, - это то, что мое сообщение отправляется через слайды в неправильном формате и этот элемент не может быть прочитан. Я думаю, что конкретно мне нужно смоделировать данные проводки, где мои данные поступают из поля формы данных (см. Выше). Я не знаю, как установить это с помощью класса WebRequest, поэтому я не могу его протестировать. Вот мой код:
static private void Post(string sURL, string sXml) {
try {
//Our postvars
byte[] buffer = Encoding.UTF8.GetBytes(sXml); // Tried ASCII...same result
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(sURL); // Tried WebRequest ... same result
WebReq.Method = "POST";
WebReq.ContentType = "application/x-www-form-urlencoded"; // tried "text/xml"... same result
WebReq.ContentLength = buffer.Length;
Stream ReqStream = WebReq.GetRequestStream();
ReqStream.Write(buffer, 0, buffer.Length);
ReqStream.Close();
WebResponse WebRes = WebReq.GetResponse();
//Console.WriteLine(WebResp.StatusCode);
//Console.WriteLine(WebResp.Server);
Stream ResStream = WebRes.GetResponseStream();
StreamReader ResReader = new StreamReader(ResStream);
string sResponse = ResReader.ReadToEnd();
} catch (Exception ex) {
} finally {
}
}
Любые идеи ?????
Эй, мой приятель предложил просто добавить «data =» в начало моего xml. VOILA! Есть ли лучший способ или это то, что я должен делать? – johnnycrash
Да, это должно сработать. – feroze