月光软件站 - 编程文档 - Delphi - 使用Socket API如何与WEB服务器通信
来源:百度文库 编辑:神马文学网 时间:2024/04/27 23:57:32
今天看到了有一些人在讨论如何使用Socket API与WEB服务器进行通信.
其实这个问题只要将请求网页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:=‘GEThttp://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是如何通过代理软件(这个软件你最好自己写一个,可以显示请求的内容的.)工作的.然后你再使用你的软件与服务器通信这样你就知道你通常出错在哪里了.
以上是我这段时间研究的内容.希望大家多拍砖.
_xyz
其实这个问题只要将请求网页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:=‘GEThttp://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是如何通过代理软件(这个软件你最好自己写一个,可以显示请求的内容的.)工作的.然后你再使用你的软件与服务器通信这样你就知道你通常出错在哪里了.
以上是我这段时间研究的内容.希望大家多拍砖.
_xyz
月光软件站 - 编程文档 - Delphi - 使用Socket API如何与WEB服务器通信
月光软件站 - 编程文档 - 其他语言 - 小偷程序大全
月光软件站 - 编程文档 - Java - 模型驱动开发
月光软件站 - 编程文档 - VC语言 - 非法探取密码的原理及其防范
Windows Socket API 使用经验
月光软件站 - 编程文档 - VC语言 - 每个开发人员现在应该下载的十种必备工具
使用 domj4 API 创建与修改 XML 文档
使用 OpenSSL API 进行安全编程
使用 OpenSSL API 进行安全编程
Delphi多线程编程 - 编程技巧文章 - 蓝鸟软件-02
Delphi多线程编程 - 编程技巧文章 - 蓝鸟软件-15
Delphi多线程编程 - 编程技巧文章 - 蓝鸟软件-18
Delphi多线程编程 - 编程技巧文章 - 蓝鸟软件-19
如何改善Web服务器性能
DELPHI编程清理指定文档夹下的过期临时文档
使用反向代理技术保护Web服务器
在Java web服务器内使用urlrewrite
使用反向代理技术保护Web服务器
如何查找 Office Web 组件 (OWC) 编程文档和示例
如何查找 Office Web 组件 (OWC) 编程文档和示例
在 Eclipse Help 中如何组织 Java API 参考文档
在Java web服务器内使用urlrewrite---------使用UrlRewriteFilter实现
如何在 Web 服务器上设置 SSL
网络socket编程指南