急啊!通过CB的控件TClientSocket实现HTTP客户端的GET、POST的方法?

youlione 2004-03-24 06:41:09

以下是我写的一个程序实现GET方法的小程序,但没有获得数据,程序如下:
比如通过以下方法取www.sina.com.cn网站的默认

void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString strGet;
ClientSocket1->Host="www.sina.com.cn";
ClientSocket1->Port=80;
ClientSocket1->Active=true;

strGet="GET http://www.sina.com.cn http/1.0 \r\n" ;
strGet+="accept: www/source; text/html; image/gif; image/jpeg; */* \r\n";
strGet+="User_Agent: myAgent \r\n";

ClientSocket1->Socket->SendText(strGet.c_str());
}


但是在事件没有取到数据:

void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
ShowMessage(Socket->ReceiveText());
}

问:是什么原因,我想strGet构造出错,但不知具体错在什么地方。
请大家在机器测试一下后回答,本人不胜感激!
...全文
134 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwell 2004-06-30
  • 打赏
  • 举报
回复
strGet="GET http://www.sina.com.cn http/1.0 \r\n" ;
这一句错了,因为你已经连上服务器的话,要得到主页,只要用
GET / HTTP/1.0\r\n
就可以了,注意HTTP是大写。
而这两句没有含义,
strGet+="accept: www/source; text/html; image/gif; image/jpeg; */* \r\n";
strGet+="User_Agent: myAgent \r\n";
因为你只要用到GET。如果要用POST的话才需要(当然还需要具体数据)。
MEFULEU 2004-06-30
  • 打赏
  • 举报
回复
这个网站还是小日本控股的呢?kao!
wjyww 2004-06-29
  • 打赏
  • 举报
回复
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString strGet;
ClientSocket1->Host="www.sina.com.cn";
ClientSocket1->Port=80;
ClientSocket1->Active=true;

strGet="GET / http/1.0\r\n\r\n" ;

ClientSocket1->Socket->SendText(strGet.c_str());
}

保证好用。
但是我提醒你如果你真的看www.sina.com.cn的页面的话,会给你返回错误请求页面。
所一你最好还是看其它的页面,比如某个具体新闻的页面就好了

记住给我分哦
yzwpf 2004-03-28
  • 打赏
  • 举报
回复
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
ShowMessage(Socket->ReceiveText());
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString strGet;
ClientSocket1->Host="www.sina.com.cn";
ClientSocket1->Port=80;
ClientSocket1->Active=true;

strGet="GET / HTTP/1.1\r\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*\r\nAccept-Language: zh-cn\r\nAccept-Encoding: gzip, deflate\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\nHost: www.sina.com.cn:80\r\nConnection: Keep-Alive\r\n\r\n";
ClientSocket1->Socket->SendText(strGet.c_str());
}
//---------------------------------------------------------------------------
Laone 2004-03-28
  • 打赏
  • 举报
回复
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: www.sina.com.cn:80
Connection: Keep-Alive

如果你想得具体的http请求方式,可以自己监听一个端口,然后用IE浏览它,就会recv到请求的字符串了
wyb_45 2004-03-28
  • 打赏
  • 举报
回复
put后是两个回车 不是一个
醉马不肖 2004-03-25
  • 打赏
  • 举报
回复
strGet+="User_Agent: myAgent \r\n\r\n";
youlione 2004-03-25
  • 打赏
  • 举报
回复
SOCKET实现HTTP客户端都没人做过,表示失望
叶子哟 2004-03-24
  • 打赏
  • 举报
回复
http请求有四个阶段:connection,request,response,disconnection
你应该用个截包软件,看你用ie访问网站的时候,都是什么数据头就可以了
shadowstar 2004-03-24
  • 打赏
  • 举报
回复
up
叶子哟 2004-03-24
  • 打赏
  • 举报
回复
你应该仔细研究一下http协议!!!
实际上你完全可以用InternetOpen这样的Internet API去做或TNMHttp
leonpard 2004-03-24
  • 打赏
  • 举报
回复
为什么不找个http协议的控件???
youlione 2004-03-24
  • 打赏
  • 举报
回复
加了\r\n还是不能接收服务的应答数据啊
醉马不肖 2004-03-24
  • 打赏
  • 举报
回复
strGet="GET http://www.sina.com.cn http/1.0 \r\n" ;
strGet+="accept: www/source; text/html; image/gif; image/jpeg; */* \r\n";
strGet+="User_Agent: myAgent \r\n\r\n";

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧