C # .NET WebClient метод DownloadData () возвращает пустую строку в GET-запросе для страницы XML

У меня есть страница с PHP-обработкой, которую я разрабатываю.
У него есть три обработчика GET-метода:

  • ?Режим = проверка
  • ?Режим = INIT
  • ?Режим = запрос

Обработчики предназначены для обеспечения экспорта из 1С-Битрикс CMS (но это не так). Первый обработчик делает свою работу довольно хорошо из моего C # WebClient:

webClient.Headers.Add(HttpRequestHeader.Authorization,
"Basic " + Convert.ToBase64String(
ASCIIEncoding.ASCII.GetBytes(
"login:pass")));
var localUrl = String.Concat(url, "?mode=checkauth");

var response = webClient.DownloadData(localUrl);
var responseString = Encoding.UTF8.GetString(response);
if (responseString.Contains("success")) return true;
return false;

Ответы на checkauth и init довольно просты (идентификатор сессии и другая строка).

Но ?mode=query должен генерировать этот тип XML (полученный с почтальоном):

С сайта выгружено 31 из 31 товаров.<?xml version="1.0" encoding="UTF-8"?>
<КоммерческаяИнформация ВерсияСхемы="2.021" ДатаФормирования="2015-02-07T22:39:23">
<Каталог>
<Ид>clothes_s1</Ид>
<ИдКлассификатора>clothes_s1</ИдКлассификатора>
<Наименование>Одежда</Наименование>
<Описание>Одежда нашей основной фабрики в Санкт-Петербурге.</Описание>
<Товары>
<Товар>
<Ид>177</Ид>
<Наименование>Штаны Полосатый Рейс</Наименование>
<Группы>
<Ид>25</Ид>
</Группы>
<Описание>Брюки-клеш идеально сидят и подчеркивают стройность фигуры. Модель имеет застежку на молнию. Изделие будет прекрасно гармонировать с любыми предметами гардероба. Длина изделия ок. 100см. Длина по внутреннему шву ок. 83см. Ширина внизу ок. 87см.
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;

&lt;div&gt;
&lt;div&gt;&lt;b&gt;Дополнительное описание:&lt;/b&gt;&lt;/div&gt;

&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Форма брючин:&lt;/b&gt; Широкие брючины&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Вид застежки: &lt;/b&gt;Молния&lt;/li&gt;

&lt;li&gt;&lt;b&gt;По назначению: &lt;/b&gt;Повседневные&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Сезон: &lt;/b&gt;демисезон&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Пол: &lt;/b&gt;Женский&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Стиль: &lt;/b&gt;Женственный стиль&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Страна бренда:&lt;/b&gt; Россия&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Страна производитель:&lt;/b&gt; Россия&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
</Описание>
<Картинка>http://localhost:6448/upload/iblock/3f7/3f751ef6d3624fff3abb9e471d57b210.jpg</Картинка>
<ЗначенияСвойств>
<ЗначенияСвойства>
<Ид>331</Ид>
<Значение></Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>335</Ид>
<Значение></Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>337</Ид>
<Значение></Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>BRAND_REF</Ид>
<Значение>company2</Значение>
<Значение>company3</Значение>
<Значение>brand2</Значение>
<Значение>brand1</Значение>
<Значение>brand3</Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>af49d0e309af4fac506a8a228000efc5</Ид>
<Значение></Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>103</Ид>
<Значение></Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>5</Ид>
<Значение></Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>10</Ид>
<Значение>177-77-хх</Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>12</Ид>
<Значение>Россия &quot;Grishko&quot;</Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>11</Ид>
<Значение>трикотаж</Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>291</Ид>
<Значение></Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>MORE_PHOTO</Ид>
<Значение></Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>461</Ид>
<Значение></Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>36</Ид>
<Значение></Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>37</Ид>
<Значение></Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>33</Ид>
<Значение></Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>34</Ид>
<Значение></Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>546</Ид>
<Значение></Значение>
</ЗначенияСвойства>
<ЗначенияСвойства>
<Ид>547</Ид>
<Значение></Значение>
</ЗначенияСвойства>
</ЗначенияСвойств>
</Товар>
<Товар>
<Ид>207</Ид>
<Наименование>Штаны Жизнь в Абстракции</Наименование>
<Группы>
<Ид>25</Ид>
</Группы>

Но когда я звоню webClient.DownloadData на? mode = запрос из кода я получаю пустую строку: respond = ""
Вот третий метод:

private string GetData(string url)
{
webClient.Headers[HttpRequestHeader.CacheControl] = "no-cache";
webClient.Headers[HttpRequestHeader.UserAgent]
= "Mozilla/5.0 (Windows NT 10.0; WOW64) " +
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36";
webClient.Headers[HttpRequestHeader.Accept] = "*/*";
webClient.Headers[HttpRequestHeader.AcceptEncoding] = "gzip, deflate, sdch";
webClient.Headers[HttpRequestHeader.AcceptLanguage] = "en-US,en;q=0.8";
var localUrl = String.Concat(url, "?mode=query");
var response = webClient.DownloadData(localUrl);
var responseString = Encoding.UTF8.GetString(response);

return responseString;
}

Я много использовал Fiddler для проверки заголовков запросов и сделал их идентичными, но это все равно не сработает.

1

Решение

Ну, я тупой.
После 4 часов исследований я понял, что после ?mode=checkauth Мне нужно было хранить куки и отправлять их с init а также query:

private Tuple<string, string> _cookie;
.
.
.
private bool InitExport(string url)
{
webClient.Headers[HttpRequestHeader.Cookie] = String.Concat(_cookie.Item1, "=", _cookie.Item2);
.

Вопрос закрыт.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]