当前位置:编程学习 > C#/ASP.NET >>

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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,