C++如何发送HTTP请求并接收返回的数据?

zhuyx808 2009-09-25 09:59:27
如何发送http请求并接受指定网页返回的数据。
比如我想用程序直接访问http://www.csdn.net/abc.html,然后得到网页中的内容?
C++不熟悉,不知道怎么写,好像是用socket写是吧,直接访问80端口,具体怎么写那?能不能给个demo?给出代码测试可用的直接结贴给分
...全文
6774 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
whg01 2009-09-25
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090925/00/9734a24e-53dc-40d2-8da2-71eb20083668.html
看看这个,稍微改改就能直接用了。
aopha 2009-09-25
  • 打赏
  • 举报
回复
测一下,不知道读到的是什么内容,可能需要写程序解析一下,才能找到你需要的内容。
zhuyx808 2009-09-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 haggard_hunan 的回复:]
CInternetSession
CHttpFile
[/Quote]
那我那样写的程序有问题吗?比如我网页中的内容就是一个IP地址:192.168.1.1,其余什么都没有,那程序直接这样写可以不?

#include <afxinet.h>
CString& getIP(){
   CInternetSession mySession;
   CHttpFile* myHttpFile=NULL;
   CString IP;
   myHttpFile=(CHttpFile*)mySession.OpenURL(url,1,INTERNET_FLAG_DONT_CACHE,NULL,0);
  myHttpFile->ReadString(IP);
   myHttpFile->Close();
   delete []myHttpFile;
   mySession.Close();
return IP;
}
haggard_hunan 2009-09-25
  • 打赏
  • 举报
回复
CInternetSession
CHttpFile
zhuyx808 2009-09-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jiangxc2004 的回复:]
这个也太折腾了吧,没看出来修改网页比修改文件简单,网页也是一个文件啊,还要通过网络传输过来,还得解析网页。。。。。

这个网页是谁维护呢,手动的修改,还是那个ip变了之后程序自动修改?
[/Quote]
举例:
插件——需要访问——>192.168.1.1
现在改为:
插件——先访问——>www.abc.com/abc.html——>网页返回出来的IP(192.168.1.1)

因为192.168.1.1这个IP的改变就必然要插件对应修改,而插件修改涉及很多用户,所以网页的修改是最简便的,我这个网页我可以随意的控制想往哪个IP都可以
jiangxc2004 2009-09-25
  • 打赏
  • 举报
回复
这个也太折腾了吧,没看出来修改网页比修改文件简单,网页也是一个文件啊,还要通过网络传输过来,还得解析网页。。。。。

这个网页是谁维护呢,手动的修改,还是那个ip变了之后程序自动修改?
zhuyx808 2009-09-25
  • 打赏
  • 举报
回复
#include <afxinet.h>
   CInternetSession mySession;
   CHttpFile* myHttpFile=NULL;
   CString myData;
   myHttpFile=(CHttpFile*)mySession.OpenURL(url,1,INTERNET_FLAG_DONT_CACHE,NULL,0);
   for(int i=0;i<20&&myHttpFile->ReadString(myData);i++)
   {
   strXMLReturn+=myData+"\r\n";
   }
   myHttpFile->Close();
   delete []myHttpFile;
   mySession.Close();


这样的程序对吗????
zhuyx808 2009-09-25
  • 打赏
  • 举报
回复
是这个样子的,本来有一个插件程序,因为这个插件程序要固定的访问一个IP地址,现在就怕这个IP地址变动,如果IP地址一变动,我就要重新生成一下这个插件,这样不太方便,所以我想的是用一个网页把这个IP地址写出来,这个网页地址就直接编在插件里面,然后我用插件去访问这个网页得到IP地址去登陆就是了,所以也不想太麻烦用什么类库的,对于这种不需要硬编码的一般是如何实现的那?如果说用读文件的方式的话不如直接访问网页,因为一个网页改起来很简单
zhuyx808 2009-09-25
  • 打赏
  • 举报
回复
用winAPI可以不?
lihan6415151528 2009-09-25
  • 打赏
  • 举报
回复
jiangxc2004 2009-09-25
  • 打赏
  • 举报
回复
libwww库
或者你自己实现http的get,post
ysuliu 2009-09-25
  • 打赏
  • 举报
回复
找个库。。
oyster2008 2009-09-25
  • 打赏
  • 举报
回复
这个难道你想自己解析HTTP协议吗,还是找一个库吧
zhuyx808 2009-09-25
  • 打赏
  • 举报
回复
不用登陆操作,不用session,什么都不用,就是直接访问直接取结果就可以了
zhuyx808 2009-09-25
  • 打赏
  • 举报
回复
我已经搞出来了,还是要谢谢大家,

CInternetSession mySession;
CHttpFile* myHttpFile=NULL;
CString myData;
CString IP;
mySession.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,1000);

myHttpFile=(CHttpFile*)mySession.OpenURL(url);
while(myHttpFile->ReadString(myData))
{
IP += myData;
}

myHttpFile->Close();
delete []myHttpFile;
mySession.Close();

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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