以下のコードを使用してメッセージからHTTP受信ヘッダーを取得したい場合がありますが、時にはうまく機能しないことがあります。recv()関数でのHTTPヘッダーの一貫性のない処理
ここを送信するために私のコードです:
send(s, message, strlen(message), 0)
そして、これは私がデータを受信する方法である:
int memory = 1;
int d = 0;
header = malloc(memory * sizeof(char));
if (header == NULL) {
printf("Error, memory\n");
return 1;
}
while (recv(s, header + d, 1,0)>0) {
if(strstr(header, "\r\n\r\n") != NULL)
break;
d++;
if (d >= memory) {
memory *= 2;
header = realloc(header, memory);
if (header == NULL) {
printf("Error, memory\n");
return 1;
}
}
}
私はそれmalloc
といくつかの問題だと思うが、私はどこ見つけることができません。
Header:
HTTP/1.1 200 OK
Date: Sat, 02 Apr 2016 02:35:07 GMT
Last-Modified: Tue, 24 Feb 2015 20:49:22 GMT
ETag: "7ab4-50fdba7431880;50c0cc9312bdc"
Accept-Ranges: bytes
Content-Length: 31412
Cache-Control: max-age=2592000
Expires: Mon, 02 May 2016 02:35:07 GMT
P3P: policyref="http://www.w3.org/2014/08/p3p.xml"
Vary: upgrade-insecure-requests
Access-Control-Allow-Origin: *
Connection: close
Content-Type: image/png; qs=0.7
そして、これはapk-dlによると、失敗したメッセージからのものです::
これが成功するには、w3.orgによると、ヘッダを受信
Header:
HTTP/1.1 200 OK
gEp7qN_agFirScA9OVXmWLV8ofyAZngl0Q_Sc-K50=h500.png HTTP/1.1
Host: apk-dl.com
Connection: close
はどうやって取得することができますヘッダーを正しくかつ一貫してデコードする機能はありますか?
まだ動作しません、私はmemmenに変更し、HTTP要求を1.0に変更しました。まだ私はヘッダーの一部だけを取得します。 'ヘッダ: HTTP/1.1 200 OK 日:土、2016年4月2日午前3時00分33秒GMT のContent-Type:画像/ PNG 接続:クローズ のSet-Cookie:__cfduid = d88ceea80daa7c7da249e58e3e ' – Qunts