На главную
ПРАВИЛА 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)
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script execution time: 0,0418 ]   [ 20 queries used ]   [ Generated: 1.08.21, 00:51 GMT ]