5856|18

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

evc里如何实现连接URL并下载网页内容? [复制链接]

小弟初涉EVC编程,发现与VC++还是有不小的差别。
现在在做一个程序,需要连接网络并从服务器下载数据,在VC里面用CInternetSession的OpenURL()可以实现该功能,但是在EVC里,只有模拟器下可以通过调试,在设备中提示“无法与服务器建立连接”。(注:设备是HP的iPaq2100)

另外有个很奇怪的现象:又一次在用设备调试的时候出现错误,引发一系列问题。。最后硬启的设备,却发现可以实现连接下载功能了,但是在打开一次IE后又出现上述问题,疑惑不解。

有没有高手做过网络编程这块的,感谢给出答复!

最新回复

我也有这个问题 http://topic.eeworld.net/u/20090106/16/4ddb4335-5940-442c-922b-a89a01405469.html  帮忙看看  谢谢  详情 回复 发表于 2009-1-6 16:51
点赞 关注

回复
举报

126

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
记得这个问题,我以前看过一篇文章,是链接没有建立好!
明天回公司查查看吧。
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
呵呵,网上也搜到过有问这个问题的朋友,只是觉得这里高手如云应该可以得到解答!
谢谢楼上热心了!
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

4
 
你已经和网络建立物理链接了吗?

例如GPRS或者通过activesync从Pc上链接internet

你的具体操作说一下
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
网络连接是好的。
2种方式:
1,通过Activesync同步,这时候是可以连接到网络的,IE,MSN都可以用。
2,通过自带网卡,接网线后,可以连接到网络。
其实还有第三种方式,用无线网卡连接wifi,但是我觉得和上面第二种没区别。

我觉得问题出在程序上。
一个很值得关注的问题是“为什么硬启后程序就可以连接,而打开一次IE后,就不能连接服务器了”
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

6
 
你的程序从测试有无物理链接-建立网络链接-尝试链接服务器
的做法,能描述一下吧
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

7
 
开始的时候程序大体是这样的

CInternetSession netSession(NULL, 0);
        CHttpFile* netFile = NULL;
        try
        {
                netFile = (CHttpFile*) netSession.OpenURL(URL);
        }
        catch(CInternetException *Exp)
        {
                netFile = NULL;
                Exp->Delete();
        }

        if(netFile)
        {
                netFile->Read(buffer,bufferLen);
                rtn = (CString)buffer;
                netFile->Close();
        }
        else
        {
                rtn = "ERROR";
        }
        netSession.Close();
        delete netFile;

其中URL是一个参数。大概的程序结构就是这样的。
帮忙看看吧:)谢谢啦
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

8
 
我想知道你怎么通过自带网卡,接网线后,可以连接到网络的?

那部分代码,或者本地配置是怎么样的?

因为你首先要保证网络的确是连通的。
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

9
 
自带网卡是不用驱动的,接网线后按默认设置就可以连接到网络了。

程序是引用了
#include "afxinet.h"
//#include "Wininet.h"
//#pragma comment(lib,"wininet.lib")
不过MS只要引用最上面的afxinet就可以了

可以保证的是,网络的确是连通的。。。因为IE,msn都是可以正常用的。所以没有在本地进行其他设置。(是不是需要再做设置?)
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

10
 
代码在那行出了问题?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

11
 
还需要GetHttpConnection 来获取链接吧。我看你好像没有做。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

12
 
我觉得可能是不同的网络链接方式需要不同的参数来建立Session
DWORD dwFlags = 0;
InternetGetConnectedState( &dwFlags, 0 );
CInternetSession session( NULL, 1,
( dwFlags & INTERNET_CONNECTION_PROXY ) == INTERNET_CONNECTION_PROXY ?INTERNET_OPEN_TYPE_PRECONFIG :INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY, NULL, NULL, 0);

你用这个试试,
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

13
 
代码没有报错的地方,在模拟器里运行正常。就是在设备上运行的时候提示“无法与服务器建立连接”。

后来不在evc下做了,在vs2005下做同样的程序,模拟器下也不能得到网络数据了,GetHttpConnection在后来的代码里是有的,但是我发现返回的值一直是零。。。

我觉得问题有这么几个可能:
1,代理问题,因为在硬启设备后,没有开过IE的情况下,设备下运行程序正常。开过一次IE后程序就不正常了。
2,编码问题,在wince下是unicode,服务器端是ASCII,但是,后来的工程下添加了转换语句,结果还是不行。发现一直没有返回值。

谢谢您的回复。11楼的方法我明天试试。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

14
 
sigh~~~还是不行啊。老问题

问题就在这一句:
netFile = (CHttpFile*) netSession.OpenURL(strURL,1,dwFlag);

执行这句的时候就会提示“无法与服务器建立连接”
按11楼的方法建立session也是同样的问题。。。

头都大了。唉
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

15
 
我觉得你可以在
netFile = (CHttpFile*) netSession.OpenURL(strURL,1,dwFlag);
中把dwFlag分别设成
INTERNET_OPEN_TYPE_DIRECT
INTERNET_OPEN_TYPE_PRECONFIG
INTERNET_OPEN_TYPE_PROXY  //如果有proxy
INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY
来试一下。

我使用的是
InternetOpen
InternetCrackUrl
InternetConnect
HttpOpenRequest
HttpSendRequest
InternetReadFile
等序列函数来实现的。不过原理应该是一样的。

1,代理问题,因为在硬启设备后,没有开过IE的情况下,设备下运行程序正常。开过一次IE后程序就不正常了。
的可能比较大。
打开IE后IE会自动进行一些设置的。

在IE设置里,在设置proxy的地方看看有没有 no autodial的,勾上试试。
我在wifi的情况下,ce的IE有时候也是会出问题的。
 
 
 

回复

47

帖子

0

TA的资源

一粒金砂(初级)

16
 
恭喜lenux,已经有星星了
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

17
 
谢谢热心的lenux,但是我的问题依然存在。我试了那些dwFlag,还是不行。我觉得我得尝试下你说的下面的序列函数了。
如果你方便的话,能给我一点代码的框架么?如果不方便贴出来,可以发我邮箱
david_yxw@163.com
在IE里基本没有设置可以用,在系统设置-连接里面我找到一些相应的东西,但是试过还是有问题。
IE启动的时候应该是有什么默认自动设置的。。
再次感谢!
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

18
 
按照序列函数的顺序,程序已经调通了!
谢谢lenux,谢谢所有关心的朋友!
虽然在InternetRead函数的地方也遇到了一些问题。。。不过最终还是成功了。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

19
 
我也有这个问题 http://topic.eeworld.net/u/20090106/16/4ddb4335-5940-442c-922b-a89a01405469.html  帮忙看看  谢谢
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表