На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Отображается "406 Not Acceptable" при использовании synapse Как исправить?
    Используя библиотеку synapse, нужно отобразить код страницы в Memo1. Для этих целей использую кнопку.
    ExpandedWrap disabled
      procedure TForm1.Button1Click(Sender: TObject);
      var http:THttpSend;
      pList : TStringList;
      begin
      pList:= TStringList.Create;
      HTTP:=THTTPSend.Create;
       try
        HTTP.Protocol := '1.1';
        HTTP.UserAgent:=
         'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36';
        HTTP.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');
        HTTP.Headers.Add('Accept-Language: en-US,en;q=0.5');
        HTTP.Headers.Add('Connection: keep-alive');
        HTTP.Sock.CreateWithSSL(TSSLOpenSSL);
        HTTP.Sock.SSLDoConnect;
       
        HTTP.HTTPMethod('GET','https://vagon-igr.ru/test1/');
        pList.LoadFromStream(HTTP.Document);
        Memo1.Text:='';
        Memo1.Lines.Add(pList.Text);
       finally
       pList.free;
       HTTP.free;
       end;
      end;

    При попытке нажатии на кнопки выводится сообщение в Memo1.
    Цитата

    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>406 Not Acceptable</title>
    </head><body>
    <h1>Not Acceptable</h1>
    <p>An appropriate representation of the requested resource could not be found on this server.</p>
    </body></html>

    Как исправить, чтобы отображался код страницы. На одном сайте прочитала, что проблема может заключаться в не соответствии кодировок.
    Цитата

    406 Not Acceptable
    Пользователь пытается посмотреть документ, который существует на сервере, но имеет кодировку\язык\формат, которые не поддерживаются у пользователя. В итоге нужно искать причину в заголовках Content-Language, Content-Encoding или Content-Type.

    Может в параметрах HTTP нужно дописать дополнительные свойства?
    Сообщение отредактировано: Olga28 -
      Попробуй с такими параметрами

      Цитата
      accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
      accept-encoding: gzip, deflate, br
      accept-language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
        Rouse_, я сделала как вы сказали.
        ExpandedWrap disabled
            HTTP.Protocol := '1.1';
            HTTP.UserAgent:=
             'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36';
            HTTP.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8');
            HTTP.Headers.Add('application/signed-exchange;v=b3;q=0.9');
            HTTP.Headers.Add('Accept-encoding: gzip, deflate, br');
            
            HTTP.Headers.Add('Accept-language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7');
            HTTP.Sock.CreateWithSSL(TSSLOpenSSL);
            HTTP.Sock.SSLDoConnect;
           
            HTTP.HTTPMethod('GET','https://vagon-igr.ru/test1/');
            pList.LoadFromStream(HTTP.Document);
            Memo1.Text:='';
            Memo1.Lines.Add(pList.Text);

        В итоге получила ошибку, только другу.
        Цитата

        <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
        <html><head>
        <title>400 Bad Request</title>
        </head><body>
        <h1>Bad Request</h1>
        <p>Your browser sent a request that this server could not understand.<br />
        </p>
        </body></html>
          Попробуйте вообще убрать заголовок Accept, пусть сервер сам решает.
            Цитата

            // HTTP.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8');
            // HTTP.Headers.Add('application/signed-exchange;v=b3;q=0.9');
            // HTTP.Headers.Add('Accept-encoding: gzip, deflate, br');

            // HTTP.Headers.Add('Accept-language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7');

            Если убрать четыре эти строчки то работает. У меня кракозябры отображаются вместо русского текста, как в заголовке указать кодировку UTF-8?
            Цитата

            <!doctype html>
            <html lang="en">
            <head>
            <meta charset="UTF-8">
            <title>Коммент</title>
            </head>
            <body>
            <form method="post" id="comment_form" action="">
            <p><label>Ваше имя: <br><input type="text" name="login" size="20" value=""></label></p>

            <p><label>Текст комментария: <br>
            <textarea name="message" cols="35" rows="4" id="message"></textarea></label></p>
            <p><input type="submit" name="send" id="send" value="Коментировать"><span id="resp"></span></p>
            <p> </p>
            </form>
            </body>
            </html>
            Сообщение отредактировано: Olga28 -
              Цитата Olga28 @
              У меня кракозябры отображаются вместо русского текста, как в заголовке указать кодировку UTF-8?

              UTF-8 нужно не в заголовке http запроса указывать, а при загрузке в StringList.
              ExpandedWrap disabled
                pList.LoadFromStream(HTTP.Document, TEncoding.UTF8)


              Хотя в приведенном коде этот стринг лист не нужен, можно сразу в Memo грузить.
              ExpandedWrap disabled
                Memo1.Lines.LoadFromStream(HTTP.Document, TEncoding.UTF8)
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0244 ]   [ 16 queries used ]   [ Generated: 18.04.24, 07:48 GMT ]