2015-02-07 19 views
1

我在開發的網站上有PHP處理的頁面。 它有三個GET-方法處理:C#.NET WebClient方法DownloadData()返回XML請求的空字符串頁面

  • 模式=檢查
  • 模式=初始化
  • 模式=查詢

處理程序被指定由1C-的Bitrix CMS提供出口? (但事實並非如此)。杉杉在兩個管理程序做他們的工作非常好,從我的C#Web客戶端:

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是相當普通的(會話ID和其他字符串)。

?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 =從代碼查詢我得到一個空字符串: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很多來檢查請求的標題並使它們相同,但它仍然不起作用。

回答

0

嗯,我很蠢。 的4個小時的研究,我算了一下,那?mode=checkauth後我需要存儲Cookie並與initquery給他們總結之後:

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

問題已關閉。

相關問題