【问题标题】:gSoap Exchange Web Services ConnectiongSoap Exchange Web 服务连接
【发布时间】:2013-10-24 19:25:39
【问题描述】:

我正在尝试编写一个可以与 EWS 代理类一起使用的应用程序。为了生成代理类,我使用了 gsoap(编译的 OpenSSL)。 我已经实现了一个与 EWS 一起使用的库,但是。网。 问题是这样的:我不知道如何实现与服务器的连接。 执行以下操作:

ExchangeServiceBindingProxy *proxy = new ExchangeServiceBindingProxy("https://192.168.0.49/EWS/exchange.asmx");
soap *pSoap = proxy->soap;
pSoap->userid = "user1";
pSoap->passwd = "password1";
pSoap->recv_timeout = 300;
pSoap->send_timeout = 300;

SOAP_ENV__Header *header = new SOAP_ENV__Header();
header->ns3__RequestServerVersion = new _ns3__RequestServerVersion();
header->ns3__RequestServerVersion->soap = pSoap;
header->ns3__RequestServerVersion->Version = ns3__ExchangeVersionType__Exchange2010;
pSoap->header = header;

//get root folder ID
ns3__DistinguishedFolderIdType *dfit = new ns3__DistinguishedFolderIdType();
dfit->Id = ns3__DistinguishedFolderIdNameType__inbox;

//set the props that we want to retrieve
ns3__FolderResponseShapeType *frst = new ns3__FolderResponseShapeType();
frst->BaseShape = ns3__DefaultShapeNamesType__AllProperties;

//get folder
ns1__GetFolderType *gftRoot = new ns1__GetFolderType();
gftRoot->FolderIds = new ns3__NonEmptyArrayOfBaseFolderIdsType();
gftRoot->FolderIds->__union_NonEmptyArrayOfBaseFolderIdsType = new __ns3__union_NonEmptyArrayOfBaseFolderIdsType();
gftRoot->FolderIds->__union_NonEmptyArrayOfBaseFolderIdsType->union_NonEmptyArrayOfBaseFolderIdsType.DistinguishedFolderId = dfit;
gftRoot->FolderShape = frst;
__ns1__GetFolderResponse response;


int error = proxy->GetFolder(gftRoot, response);

因此,得到错误:SLL_ERROR。

我知道,我做错了什么。但是什么?我应该怎么做,使用代理类函数?

【问题讨论】:

    标签: c++ exchangewebservices gsoap


    【解决方案1】:

    我自己解决了: 添加到项目 LibNTLM 并添加到预处理器 WITH_NTLM。

    也改了代码,一点点:

    ExchangeServiceBindingProxy *proxy = new ExchangeServiceBindingProxy(endpoint.c_str());
    
    soap *pSoap = proxy->soap;
    pSoap->userid = "Ivan1";
    pSoap->passwd = "1";
    pSoap->ntlm_challenge = "";
    pSoap->authrealm = "Ursa-Minor";
    
    pSoap->ssl_flags = SOAP_SSL_NO_AUTHENTICATION;
    //pSoap->keep_alive = true; 
    pSoap->mode = SOAP_IO_KEEPALIVE;
    
    //get root folder ID
    ns3__DistinguishedFolderIdType *dfit = new ns3__DistinguishedFolderIdType();
    dfit->Id = ns3__DistinguishedFolderIdNameType__inbox;
    
    //set the props that we want to retrieve
    ns3__FolderResponseShapeType *frst = new ns3__FolderResponseShapeType();
    frst->BaseShape = ns3__DefaultShapeNamesType__AllProperties;
    
    //get folder
    ns1__GetFolderType *gftRoot = new ns1__GetFolderType();
    gftRoot->FolderIds = new ns3__NonEmptyArrayOfBaseFolderIdsType();
    gftRoot->FolderIds->__size_NonEmptyArrayOfBaseFolderIdsType = 1;
    gftRoot->FolderIds->__union_NonEmptyArrayOfBaseFolderIdsType = new __ns3__union_NonEmptyArrayOfBaseFolderIdsType();
    gftRoot->FolderIds->__union_NonEmptyArrayOfBaseFolderIdsType->union_NonEmptyArrayOfBaseFolderIdsType.DistinguishedFolderId = dfit;
    gftRoot->FolderIds = (ns3__NonEmptyArrayOfBaseFolderIdsType*)dfit;
    gftRoot->FolderShape = frst;
    __ns1__GetFolderResponse response;
    
    int qq = proxy->GetFolder(gftRoot, response);
    
    return true;
    

    但现在我还有其他问题:Error 500: Internal Server Error

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多