0

Отправляю get запрос через HttpCleent C#, в ответе приходит json файл. Но при прочтении json

"JObject responseJs = JObject.Parse(result);"

вылетает ошибка. >>

"Newtonsoft.Json.JsonReaderException: "Unexpected character encountered while parsing value: <. Path '', line 0, position 0.""

У меня несколько таких методов, в одном json отлично читается, а во втором вообще не видит. Разными манипуляциями понял, что json файл вообще не читается. Если посмотреть через fiddler, то json там есть.

Кто нибудь знает в чем может быть проблема?


    static CookieContainer cookieContainer = new CookieContainer();
    public string cookie { get; set; }
    public string userAgent { get; set; }
    public string result { get; set; }
string page = &quot;angebote/mercedes-benz-a-140-classic-klima-sitzheizung-export-export-benzin-blau-1fa8a922-22df-4a50-b819-2cec1e3c22ec?lastSeenGuidPresent=true&amp;cldtsrc=listPage&amp;cldtidx=1&amp;topspot_dealer_id=20423&amp;topspot_algorithm=exp-98-topspot-fullfilter-recommended-withoutfilterloosening&amp;topspot_recommender_bucket=bucket1&amp;common_test_cxp_web_9=98_noloosefilter&quot;;

public void GetInfo(string page)
{
    var baseAdress = new Uri(&quot;https://www.autoscout24.de&quot;);

    using (var handler = new HttpClientHandler()
    { CookieContainer = cookieContainer,
      AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,             
    })
    {
        using (var client = new HttpClient(handler))
        {
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            client.DefaultRequestHeaders.Add(&quot;Accept&quot;, &quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8&quot;);
            client.DefaultRequestHeaders.Add(&quot;Accept-Language&quot;, &quot;ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7&quot;);
            client.DefaultRequestHeaders.Add(&quot;Accept-Encoding&quot;, &quot;gzip, deflate, br&quot;);
            client.DefaultRequestHeaders.Add(&quot;User-Agent&quot;, userAgent);
            client.DefaultRequestHeaders.Add(&quot;DNT&quot;, &quot;1&quot;);

            client.DefaultRequestHeaders.Add(&quot;Referer&quot;, &quot;https://www.autoscout24.de/lst?sort=standard&amp;desc=0&amp;ustate=N%2CU&amp;atype=C&amp;cy=D&amp;ocs_listing=include&amp;page=2&amp;search_id=4w7uduceiw&quot;);
            client.DefaultRequestHeaders.Add(&quot;sec-ch-ua&quot;, &quot;Not;ABrand\&quot;;v=\&quot;99\&quot;,\&quot;Google Chrome\&quot;;v=\&quot;97\&quot;,\&quot;Chromium\&quot;;v=\&quot;97\&quot;&quot;);
            client.DefaultRequestHeaders.Add(&quot;sec-ch-ua-mobile&quot;, &quot;?0&quot;);
            client.DefaultRequestHeaders.Add(&quot;sec-ch-ua-platform&quot;, &quot;\&quot;Windows\&quot;&quot;);
            client.DefaultRequestHeaders.Add(&quot;Sec-Fetch-Dest&quot;, &quot;empty&quot;);
            client.DefaultRequestHeaders.Add(&quot;Sec-Fetch-Mode&quot;, &quot;cors&quot;);
            client.DefaultRequestHeaders.Add(&quot;Sec-Fetch-Site&quot;, &quot;same-origin&quot;);
            client.DefaultRequestHeaders.Add(&quot;Host&quot;, &quot;www.autoscout24.de&quot;);

            cookie = &quot;asfasfasf=safas;asfasfasf=safas;asfasfasf=safas;&quot;; //куки ни на что не влияют

            string[] cookies = cookie.Split(';');
            for (int i = 0; i &lt; cookies.Length; i++)
            {
                string[] cookieArgs = cookies[i].Split('=');
                cookieContainer.Add(baseAdress, new Cookie(cookieArgs[0], cookieArgs[1]));
            }

            var response = client.GetAsync(baseAdress + page).Result;     

            string res = response.Content.ReadAsStringAsync().Result;

            //Здесь возникает ошибка
            JObject responseJs = JObject.Parse(response.ToString());
            result = responseJs.ToString();
        }
    };
}

Grundy
  • 81,538
  • С WebClient такая же ситуация, отоброжается html код страницы, но не json строка. В fiddler так же есть json строка – Dmitriy Eptas Jan 17 '22 at 10:28
  • Ну, значит по этой ссылке битый JSON, либо вовсе приходит не он. А вот что приходит, как, от куда, тут уж извините, нам от куда знать? Может вы заголовок не указываете нужный, можете еще что. – EvgeniyZ Jan 17 '22 at 11:07
  • У меня два идентичных метода, в одном все получается, во втором изменена только ссылка и в нем не приходит json, но в fiddler он есть. Только программа его не видит – Dmitriy Eptas Jan 17 '22 at 11:25
  • Без конкретики тут сложно что-либо сказать. Судя по ошибке парсера - вам, вероятнее всего, приходит в ответе HTML. Но это лишь догадка – Andrei Khotko Jan 17 '22 at 11:46
  • Все заголовки правильные, адресс тоже. В fidler запрос полностью рабочий, все данные отправляются и приходит нужный ответ, в том числе json файл. Я использую Newtonsoft.json, кажется в нем проблема.
                    var response = await client.GetAsync(baseAdress);
                    result = await response.Content.ReadAsStringAsync();
    
                    JObject responseJs = JObject.Parse(result);   //Здесь возникает ошибка
                    result = responseJs.ToString();   
    
    

    Если прочитать ответ, то в нем только html код страницы, но нету json

    – Dmitriy Eptas Jan 17 '22 at 11:55
  • @DmitriyEptas ну значит эта ссылка требует другого подхода. Давайте нам код, ссылку, делайте минимальный самодостаточный пример, который мы сможем запустить у себя, без этого, ваш вопрос попросту не имеет смысла, ибо нам остаётся лишь гадать что у вас там и как. – EvgeniyZ Jan 17 '22 at 11:55
  • Я надеюсь, вы не про этот JSON видный в Fiddler говорите? Если да, то какой же это JSON то? Это HTML, внутри которого есть JSON данные, а значит и парсить вам надо сначала HTML, вытягивая от туда JSON, а уж затем делать десериализацию JSON. Если же речь не про этот JSON, то я по указанной ссылке его не вижу. – EvgeniyZ Jan 17 '22 at 12:59
  • Нет, вот этот https://ibb.co/F3DSDh4 – Dmitriy Eptas Jan 17 '22 at 13:25
  • Ну так это фишка Fiddler, который за вас выдрал данные из HTML. Нажмите Raw или TextView, увидите там HTML, который отдает вам сайт. – EvgeniyZ Jan 17 '22 at 13:29
  • А как мне так же "выдрать" этот json? В другом таком же методе берется список ссылок с обьявлениями, так же через json, и все работает. В этом методе уже берется информация уже об обьявлении. Возможно в этом проблема – Dmitriy Eptas Jan 17 '22 at 14:03
  • "в другом методе" - мне это не говорит о чем-либо. "как выдрать" - Как парсить HTML. – EvgeniyZ Jan 17 '22 at 14:23

0 Answers0