2009-10-05 45 views
1

我正在嘗試使用Web服務,因此使用服務的WSDL服務描述向我的項目添加了Web服務引用。一切都很好,沒有錯誤信息,但我注意到在我的Web服務參考中聲明瞭一個字段爲string,而它應該是intVisual Studio 2008導入錯誤的數據類型的WSDL

通過WSDL服務描述下去,我注意到,相應的字段聲明爲:

<xsd:complexType name="ItemType"> 
    <xsd:all> 
     <xsd:element name="quantity" type="xsd:integer"/> 
    </xsd:all> 
</xsd:complexType> 

顯然,本場應該是一個整數,但Visual Studio 2008中認爲,它是一個字符串。

我的問題是:

  1. xsd:integer有效的WSDL數據類型或它不應該是xsd:int
  2. 我怎麼能告訴VS 2008這個字段應該是int
  3. 當我在C#中提供一個string(僅包含數字)時,如果調用者(顯然是PHP腳本)期望int,我仍然能夠使用該服務嗎?

感謝您的幫助!

回答

4

問題是:xs:integer是「任意長度的有符號整數」 - 因此它可能大於.NET Int32類型的範圍 - >因此它被VS2008轉換爲字符串。

使用xs:int - 我相信這是正確轉換爲Int32。

在這裏看到:http://www.codesynthesis.com/projects/xsd/documentation/schema-authoring-guide.xhtml#integer

xs:int映射到32位整數,而xs:integer是任意長度的。

將我仍然能夠使用該服務時,我在C#中,其中 調用者(顯然是一個PHP腳本) 需要int提供的字符串(僅 包含數字)?

我會說是的,因爲最終,通過電線傳遞的信息始終是文本XML的核心。它並不關心你是否提供了一個字符串「12345」並將其序列化到你的XML消息中,或者你是否將'12345'作爲一個INT序列化到消息中 - 在XML中,最後,一切都是一個字符串。

Marc

+0

謝謝你 - 我會將這些信息發佈到Web服務提供者。 – 2009-10-05 10:10:40

+0

我仍然能夠正確地與Web服務通信(請參閱我的問題#2)嗎? – 2009-10-05 10:11:46

相關問題