关于VS2005 调用WebService返回发送请求数据失败问题
来源:互联网 发布:网络攻防大赛 宁夏 编辑:程序博客网 时间:2024/05/23 19:19
网上关于VC调用WebService的资料已经很详尽了,在此就不多废话了。这里主要讲讲在调用WebService过程中遇到的一些问题。
最初,调用WebService时也返回"调用WebService服务失败或超时"的错误,但一直都没有警觉(认为可能是因为网络的原因造成的),现在想来真应该嘲笑一下自己。程序员应该一个警称的态度对态自己的工作及自己编写的代码,不应该存在任何原因的幻想。呵呵~~~言归正传,过了几天以后,发现程序除了最初的几个WebService调用外,其后的任何WebService都返回失败(看吧,这就是后果~~~)。
启动调试器,执行单步调试。发现在
CAtlHttpClientT<TSocketClass>::ParseStatusLine(BYTE* pBuffer) //这个函数返回的失败代码
具体代码如下:
// pBuffer better be pointing at the status code now LPCSTR pEnd = NULL; if (*pBuffer >= '0' && *pBuffer <= '9') { // probably a good status code m_nStatus = strtol((LPSTR)pBuffer, (LPSTR*)&pEnd, 10); if (Checked::get_errno() == ERANGE) return NULL; // bad status code --- return here } else return FALSE; // bad status code;
在调试程序中,m_nStatus=200,Checked::get_errno() 返回34,显然返回的调用错误代码为ERANGE.并传回空值表示HTTP头解析失败(RR_PARSEHEADERS_FAILED).从而导致VS2005调用WebService发送请求参数失败.
问题是找到了,可是要如何解决呢?
在网上搜索相关信息.嘿嘿,终不负有心人.找了半天终于找到了.原来不仅需要打上VS2005补丁,还要在调用Checked::get_errno()前将错误代码清0.
参考信息:
http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.webservices/2006-12/msg00073.html
http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/3efe7b74-c21b-42f4-9e68-65cb23beec05/
VS2005 Sp1补丁下载地址: http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&familyid=bb4a75ab-e2d4-4c96-b39d-37baf6b5b1dc
在安装VS2005 SP1补丁是一个既漫长又痛苦的过程,用时甚至比安装整个VS2005还要长.安装时C盘大约需要4G的空间(如果硬盘不够先即时清理吧,否则到时候有得你折腾滴).我苦苦守候了整整2个半小时,CPU占用率一直为100%,什么事都干不了,郁闷~~~~建议等到中午吃饭或者晚上的时候再安装.参考BLOG:恐怖的vs2005 sp1安装过程.
修改后的代码如下:
// pBuffer better be pointing at the status code now LPCSTR pEnd = NULL; if (*pBuffer >= '0' && *pBuffer <= '9') { // probably a good status code m_nStatus = strtol((LPSTR)pBuffer, (LPSTR*)&pEnd, 10); Checked::set_errno(0); //新增加代码,在调用get_error前先将错误代码清空.如果没有安装 //SP1 不能进行链接 if (Checked::get_errno() == ERANGE) return NULL; // bad status code } else return FALSE; // bad status code;
最后重新编译工程.安啦,没有出现类似错误.任务圆满解决!!!
- 关于VS2005 调用WebService返回发送请求数据失败问题
- 关于POST请求数据发送问题
- webservice篇:其中关于调用外界数据,读取返回数据
- 关于页面请求返回json数据问题
- jQuery通过调用webservice返回json数据的问题
- php 调用webservice ,返回数据 中文乱码问题
- Android 请求WebService返回SoapObject数据解析
- 关于ajax请求 后台返回中文数据乱码问题
- Xcode7发送http请求失败的问题
- xcode 数据请求失败问题
- 发送xml数据和调用webservice
- 发送xml数据和调用webservice
- 发送xml数据和调用webservice
- delphi调用C# Webservice返回数据集
- Delphi调用 .net webService 返回数据;
- jQuery调用WebService返回JSON数据
- jQuery Ajax调用WebService返回JSON数据
- jQuery调用WebService返回JSON数据
- oracle 群集
- 扑克牌游戏C#
- 清除打印文档
- 软件开发顺序------个人体会
- 遇到的const问题
- 关于VS2005 调用WebService返回发送请求数据失败问题
- uclinux-2008R1.5-RC3(bf561)到VDSP5的移植(51):CONFIG_LOG_BUF_SHIFT
- 开发版交叉编译环境的工具链制作---arm-linux
- WEB三层结构的设计思路
- 使用Commons Configuration
- 利用Timer及TimerTask实现游戏LOGO闪屏及煮鸡蛋闹钟程序
- Python的迭代器和生成器
- 08年的最后一个夜晚
- C2C是什么