BSTR   XMLret=NULL;  
HRESULT  hr;
IXMLHttpRequest *HttpRequest; 
hr=CoCreateInstance(CLSID_XMLHTTPRequest,NULL,CLSCTX_INPROC_SERVER,IID_IXMLHttpRequest,(void**)&HttpRequest);      
struct  tagVARIANT ABool;     
ABool.boolVal= false;   


VARIANT farFalse; 
VariantInit(&farFalse);
V_VT(&farFalse)   =VT_ERROR;
VARIANT varFalse;
VariantInit(&varFalse);
V_VT(&varFalse) = VT_BSTR;
V_BSTR(&varFalse)=L"";
VARIANT arFalse;
VariantInit(&arFalse);
V_VT(&arFalse)   = VT_BSTR;
V_BSTR(&arFalse) =L"";
//BSTR   parm2   = L"http://www.icityid.com/webict/huxiCBD/huxiCBD_1.rar";   
hr=HttpRequest->open(L"GET",_bstr_t(URLname),ABool,varFalse,arFalse);   
   hr=HttpRequest->send(farFalse); 
hr=HttpRequest->getResponseHeader(L"Content-Length",&XMLret);
上面是我写的东东,想获得.RAR文件的信息。
程序运行到getResponseHeader时返回值都是E_FAIL.XMLret的值是空的,
不知道为什么,答者人人有分

解决方案 »

  1.   

    strValue = oXMLHttpRequest.getResponseHeader(bstrHeader);
      

  2.   

    不就是需要MSXML2.DLL嘛,工程中已经引用了。
    MSXML4 SP2 我也装过了。
    不过我发现要是在下载RAR操作之后调用getResponseHeader,正确。
    如果在下载操作之前调用,空的。
    MSDN上不是说可以获得网络上的文件的HEADER吗。难道要先下载,那我用它还有什么意义啊
      

  3.   

    尝试异步调用,处理OnReadyStateChange事件这里有些代码可以参考:
    http://msdn2.microsoft.com/en-us/library/ms759186.aspx
      

  4.   

    在c++里IXMLHttpRequest *HttpRequest;
    没有OnReadyStateChange()
    有个put_OnReadyStateChange();
    也不知道怎么用,
    MSDN里的都没有C++的示例。
    有谁能帮我把上面的代码改成异步的啊。
    或者说说具体方法也可以。
    谢谢了。
      

  5.   

    http://topic.csdn.net/t/20030429/12/1721161.html