私が本当に抽出する必要がある情報は次のとおりです。
a)GET
依頼か否か
b) ファイルアドレス (例: index.html)
c) ホスト情報 (例: localhost:8081)
私は今これを行うコードを持っています (投稿の下部を参照) が、非効率的で静的で、ホスト情報を取得していないようです。
したがって、C で HTTP リクエストを解析するための適切なソリューションが必要です。乾杯!
HTTP リクエスト
GET /index.html HTTP/1.1
Host: localhost:8081
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.70 Safari/537.17
DNT: 1
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,en-GB;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
現在のコード
int parsehttp(char *inputstring, int *type, char *getaddress) {
if((strncmp(inputstring, "GET", 3)) == 0) {
*type = 1;
} else {
*type = 0;
}
char firstline[BUFLEN] = "";
int charoffset = getlineend(inputstring); //this function returns the int offset of '\r\n'
strncpy(firstline, inputstring, charoffset-2);
firstline[charoffset-1] = '\0';
sscanf(firstline,"%*s %s %*s",getaddress);
inputstring = (inputstring + charoffset);
return 1;
}