vc.net2005中用非托管方式调用webservice
webservice<我取的名字叫做RegeditService.asmx>用的是最简单,自动生成的方法:::[WebMethod(Description = "Hello World......This is a Test!!!!")]
public string HelloWorld() {
return "Hello World";
}
然后用vc.net生成一dialog工程,代码如下:::
#include "WebService.h"
using namespace RegeditService;
void CMySoapTestDlg::OnBnClickedOk()
{
CoInitialize(NULL);
HRESULT hr = S_OK;
CComBSTR hiResult;
CRegeditService* debug = new CRegeditService;
hr = debug->HelloWorld(&hiResult);
if(FAILED(hr))
{
MessageBox("调用失败");
}
else
{
CString str(hiResult);
MessageBox(str,"调用结果");
}
delete debug;
CoUninitialize();
}
最后的结果是返回======>>调用失败!!
debug到localhost.h中的
__atlsoap_hr = SendRequest(_T("SOAPAction: \"http://tempuri.org/HelloWorld\"\r\n"));
继续进入到
atlhttp.inl中的
inline bool CAtlHttpClientT<TSocketClass>::ProcessStatus(DWORD dwFlags) throw()
{
switch(m_nStatus)
{
......
case 401: // auth required
return NegotiateAuth(false); <<<<<<<================在这里
break;
case 407: // proxy auth required
return NegotiateAuth(true);
break;
}
return false;
}
发现m_nStatus=401,是什么原因?请指教!!!
3ks --------------------编程问答-------------------- 我的开发环境是vs.net2005,操作系统是windows server 2003 --------------------编程问答-------------------- 我是按照
http://www.vckbase.com/document/viewdoc/?id=1696
这篇文章做的,只是调用的webservice中的方法不一样而已,
为什么会调用失败呢? --------------------编程问答-------------------- --------------------编程问答-------------------- 我也想知道,帮你顶,用托管的就是可以的。非托管难道还要设置什么 --------------------编程问答-------------------- 问题解决了吗 --------------------编程问答-------------------- 参见http://pro.biehun.com/View-6-170.aspx
补充:.NET技术 , VC.NET