Я хотел бы извлечь конкретное поле из HTTP-запроса / ответа.
, т. Е.
...
Server: gws
Content-Length: 224
X-XSS-Protection: 0
...
как char *: я бы хотелпоместите, например, '224' в какую-то переменную.
У меня есть такой код:
int extract_content_size(Buffer *header)
{
char* line = "GET /Content-Length: 224\n";
int val ;
int ret = sscanf(line, "%*[^Content-Length: ]%[%d]%*[^\n]",&val);
printf("%s",line);
printf("THE EXTRACTED THING IS %lld\n", val) ;
return ret;
}
Т.е. отбросить все до
Что несколько скопировано из аналогичного вопроса:
извлечение номера из запроса http
(т.е. эта небольшая часть очень хорошо задокументирована)!
В частности, мой вывод:
GET /Content-Length: 224
THE EXTRACTED THING IS 925
Я полагаю, что здесь может быть виновно регулярное выражение;но из-за следующих руководств это кажется правильным.
Меня действительно интересует только длина_содержания здесь.
Вот еще некоторые подробности:
on
Location: http://www.google.com/imghp
Cache-Control: private
Content-Type: text/html; charset=UTF-8
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Date: Sun, 22 Sep 2019 22:05:47 GMT
Server: gws
Content-Length: 224
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Set-Cookie: 1P_JAR=2019-09-22-22; expires=Tue, 22-Oct-2019 22:05:47 GMT; path=/; domain=.google.com; SameSite=none
Set-Cookie: NID=188=VSRygM_9FrfzeRwgcE8mFcDzXgPD86b7oRDIIE8EaIyIrkBbNFbs_cWkKWb47Fb_tmYY7lKL9xmjKUMy8yhb9Jpm-Bkh4-NXDqHSFW1HD_BddPfdGNqLG_DHz-7dMTedVaV4_SVaETs_gPzDi8oxh8XB_z5UYQIUD0EcK-86qFI; expires=Mon, 23-Mar-2020 22:05:47 GMT; path=/; domain=.google.com; HttpOnly
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com/imghp">here</A>.
</BODY></HTML>
Это полный запрос HEAD для www.google.com / images
Вывод по-прежнему неверен, используя:
int ret = sscanf (header-> data, "GET/ Content-Length:% d ", & val);
, в частности:
THE EXTRACTED THING IS 3