其實這個問題只要將請求網頁HTTP內容明白就好解決.
請求HTTP頭內容如下:
GET 你的網址 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */* //要求返回的內容,如需要返回圖片或Flash等,我通常都是讓伺服器僅返回text/html,主要是加快速度.
Accept-Language: zh-cn//使用的語言
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2) //這裡主要是告訴伺服器你的IE版號,所使用的系統及使用的瀏覽器,其實如果你想隱藏這裡的內容,可以自行修改.
Host: www.paymesurf.com //伺服器位址
Proxy-Connection: Keep-Alive
上面基本上是HTTP的內容,在使用過程中大家需要注意以下幾點:
1 發送請求的內容時,一定要再多加一個+#13#10
Httpstr:=GET http://www.paymesurf.com:80/surf3.php?usrid=607 HTTP/1.1+#13#10;
httpstr:=httpstr+Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*+#13#10;
httpstr:=httpstr+Accept-Language: zh-cn+#13#10;
httpstr:=httpstr+User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2;
.NET CLR 1.1.4322)+#13#10;
httpstr:=httpstr+Host: www.paymesurf.com+#13#10;
httpstr:=httpstr+Proxy-Connection: Keep-Alive+#13#10;
上面是一個網友的請求內容,而這個無法返回網頁內容,主要問題就是沒有告訴伺服器哪裡是結束位置.需要在最後面的位置再加入一個+#13#10,這樣伺服器 就會知道這裡是結束了.
2 如何知道網頁請求完畢,主要是通過FD_CLOSE來判斷,當網頁全部返回時,伺服器會自動關閉這個請求,所以你只要知道當前請求關閉就說明網頁已經下載完畢.
3 下面是我個人的經驗了,如果你想寫與WEB通訊的軟體,最好不要直接使用Socket與伺服器通訊,先將自己的IE設定成代理的模式,先看一看IE是如何通過代理軟體(這個軟體你最好自己寫一個,可以顯示請求的內容的.)工作的.然後你再使用你的軟體與伺服器通訊這樣你就知道你通常出錯在哪裡了.