项目中微信支付, 前端程序VC开发的.
由于现在没有C++接口,只能搭建一个HTTP后台,通过HTTP请求进行转发微信支付请求.
在网上找了一个比较广泛的httpclient.h ,在用http get方法时,如果http服务器未开启的情况, 内部会弹出对话框"无法与服务器建立连接",但是后面的代码无法执行,很费解.
根据VS的输出窗口,提示引发异常 CInternetException, 跟踪到httpclient.cpp中,发现是在调用OpenURL出现的异常,但是源码中的catch捕获的是std::exception异常,查MSDN发现
OpenURL函数抛出的是CInternetException *异常,更改catch的异常类型后,可以正常捕获异常了.
源码为
CString CHttpClinet::doGet(CString href)
{
CString httpsource="":
CInternetSession session1(NULL,0);
CHttpFile *pHTTPFile= NULL;
try{
pHTTPFile = (CHttpFile*)session1.OpenURL(href);
}
catch(std::exception e)
{
...
}
...
}
将 catch(std::exception e) 改为catch(CInternetException * e)后即可
PS: 不知道是不是下到一个盗版的源码,有个小坑,记录一下.