Извлечь подстроку с переменным полем C с помощью sscanf - PullRequest
2 голосов
/ 23 сентября 2019

Я хотел бы извлечь конкретное поле из 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...