我有另一個問題。現在我正在嘗試編寫一個可以從標準HTTP頭中成功提取發佈數據的函數。提取HTTP發佈數據
例如,如果我進入的HTTP標頭是:
GET/HTTP/1.0
Host: example.com
postdata=1&otherdata=2&whatever=3
我只想找回:
postdata=1&otherdata=2&whatever=3
爲了符合標準,\r\n
必須在代碼中產生,以表示一個新行。
目前,該函數沒有返回任何內容,但是如果我刪除&& !strstr(p1,"\r\n")
,則返回HTTP頭中除第一行之外的每一行。
從左到右的函數參數是:傳入的HTTP數據,輸出數據和要檢索的最大大小。
話,我會從另一個調用程序的功能在以下方式:
char result[500];
char* httppostdata=gethttpdata();
gethttppost(httppostdata,result,500);
我們必須假設高於gethttpdata返回一個有效的指針到實際的HTTP數據。
這是需要固定功能:
unsigned long gethttppost(char* in,char* res,unsigned long max){
char *p2,*p1=in;unsigned long mx;
while ((p1=strstr(p1,"\r\n"))){
p1+=2;
if ((p2=strstr(p1,"\r\n\r\n")) && !strstr(p1,"\r\n")){
mx=(unsigned long)(p2-p1);
if (mx > max){mx=max;}
memcpy(res,p1,mx);
return mx;
}
}
return 0;
}
貴HTTP頭總是包含單詞'postdata'? –
並不總是如此。它可能是隨機的 – Mike