2011-06-14 85 views
1

我正試圖從Microsoft Project Server Project Web服務檢索項目信息。gSOAP不返回來自Web服務的信息,但它只返回模式

我使用gSOAP來實現客戶端。這裏是我的代碼看起來像:

if (project.ReadProjectStatus(&read_project_status_message, &read_project_status_response) == SOAP_OK) 
{ 
    ofstream project_info("C:\\PROJECTINFO.XML"); 
    project_info << read_project_status_response.ReadProjectStatusResult->__any; 
} 

儘管從項目服務器的響應的樣子:

<soap:Envelope ...> 
    <soap:Body ...> 
     <ReadProjectStatusResponse ...> 
      <ReadProjectStatusResult> 
       <xs:schema ...> 
       ... 
       </xs:schema ...> 
       <diffgr:diffgram ...> 
        <ProjectDataSet ...> 
        .... 
        </ProjectDataSet> 
       </diffgr:diffgram> 
      </ReadProjectStatusResult> 
     </ReadProjectStatusResponse> 
    </soap:Body> 
</soap:Envelope>     

當我打開文件PROJECTINFO.XML(其中read_project_status_response.ReadProjectStatusResult - > __任何寫入),我只能看到

<xs:schema ...> 
    ... 
</xs:schema> 

部分。項目信息無關。

任何人都知道爲什麼會發生這種情況,以及如何使用gsoap檢索項目狀態信息?

在此先感謝。

回答

0

太少太遲,但在這裏不用...

由項目服務器提供的WSDL是不完整的。它看起來像這樣。它

<s:element name="ReadProjectStatusResponse"> 
    <s:complexType> 
     <s:sequence> 
     <s:element minOccurs="0" maxOccurs="1" name="ReadProjectStatusResult"> 
      <s:complexType> 
      <s:sequence> 
       <s:any namespace="http://schemas.microsoft.com/office/project/server/webservices/ProjectDataSet/" /> 
      </s:sequence> 
      </s:complexType> 
     </s:element> 
     </s:sequence> 
    </s:complexType> 
    </s:element> 

更改到以下(注意額外S:年代以前元素:有),並重新編譯使用gSOAP的。現在gsoap將創建2個成員變量(xsd__schema和__any)。 xsd__schema將包含模式,__any將攜帶正確的數據。

<s:element name="ReadProjectStatusResponse"> 
    <s:complexType> 
     <s:sequence> 
     <s:element minOccurs="0" maxOccurs="1" name="ReadProjectStatusResult"> 
      <s:complexType> 
      <s:sequence> 
       <s:element ref="s:schema"/> 
       <s:any namespace="http://schemas.microsoft.com/office/project/server/webservices/ProjectDataSet/" /> 
      </s:sequence> 
      </s:complexType> 
     </s:element> 
     </s:sequence> 
    </s:complexType> 
    </s:element>