2011-05-30 14 views
5

मुझे wcf वेब-सेवा (basicHttp बाइंडिंग) मिली है। हमारे डेल्फी 7 ग्राहक इसे उपभोग नहीं कर सके। मैं पहले ही डब्लूएसएफ एक्स्ट्रा के साथ डब्लूएसडीएल को फटकार चुका हूं। ठीक। डेल्फी 7 wsdl आयातक प्रॉक्सी सही उत्पन्न करता है।डब्ल्यूसीएफ डेल्फी 7 विधि इनपुट पैरामीटर

अब मुझे इनपुट पैरामीटर के साथ समस्याएं आई हैं। उनके पास हमेशा डिफ़ॉल्ट मान होते हैं (स्ट्रिंग के लिए खाली, int के लिए 0)।

विधियों से आउटपुट मान delphi7 ठीक हो जाता है। उदाहरण के लिए उदाहरण के लिए:

 public string Test(string a) 
     { 
       return "Test"+a; 
     } 

यह विधि हमेशा "टेस्ट" लौटाती है। मेरा लॉगिंग सिस्टम ठीक है कि मुझे विधि में खाली मिला है, इसलिए समस्या सही हस्तांतरण इनपुट पैरामीटर है।

मैं क्या गलत है undersand नहीं कर सकते

संपादित

प्रॉक्सी:

ISyncer = interface(IInvokable) 
    ['{D46862B0-BDD3-8B80-35A8-A2AC69F24713}'] 
    function Test(const a: String): String; stdcall; 
    end; 

कॉल:

Sync:=(dmMain.HTTPRIO1 as ISyncer); 
test:=Sync.Test('5555'); 

dmMain.HTTPRIO1 विकल्पों पर soLiteralParams है:

+०१२३५१६४१०६१

init:

InvRegistry.RegisterInvokeOptions(TypeInfo(ISyncer), ioLiteral); 

कॉल के बाद मुझे संदेश के साथ अपवाद:

Error deserializtion message body for operation Test. 
Operation formatter detects ivalid message body. Expecting node type "Element" 
with name "Test" and namespace "http://tempuri.org". Actually node type "Element" 
with name "xsd:String" and namespace "http://w3.org/2001/XMLSchema" 

wsdl टुकड़ा:

<xsd:element name="Test"> 
− 
<xsd:complexType> 
− 
<xsd:sequence> 
<xsd:element minOccurs="0" name="a" nillable="true" type="xsd:string"/> 
</xsd:sequence> 
</xsd:complexType> 
</xsd:element> 
− 
<xsd:element name="TestResponse"> 
− 
<xsd:complexType> 
− 
<xsd:sequence> 
<xsd:element minOccurs="0" name="TestResult" nillable="true" type="xsd:string"/> 
</xsd:sequence> 
</xsd:complexType> 
</xsd:element> 

EDIT2

मैं अनुसंधान HTTP अनुरोध:

नेट

<Test> xmlns="http://tempuri.org/"><a>5555</a></Test> 

काम करता है सही;

Delph7

<Test xmlns="http://tempuri.org/"><xsd:a>5555</xsd:a></Test> 

अशक्त इनपुट पैरामीटर। समस्या उपसर्ग XSD में है

+0

सुनिश्चित नहीं है कि कारण क्या है। क्या आपको कोई अपवाद मिलता है? क्या यह सेवा एक के साथ ठीक काम करती है।शुद्ध ग्राहक (परीक्षण उद्देश्य)? – Aravind

+0

कोई अपवाद नहीं, सेवा .net ग्राहकों के साथ ठीक काम करती है। इनपुट पैरामीटर सही ढंग से पास हुए –

+1

कृपया wsdl और जेनरेट प्रॉक्सी क्लास – Sam

उत्तर

0

मैंने इसे किया है। मैंने थैम्पप्रियो के इवेंट हैंडलर ऑनबेयरएक्सक्यूट के माध्यम से प्रत्येक सेवा बेटेम में साबुन लिफाफा तय किया।

मैं ठीक करता हूं (नामस्थान उपसर्ग हटाएं) और यह काम करता है। धन्यवाद

4

जबकि WCF दस्तावेज़/शाब्दिक/लिपटा सोप का उपयोग करता है डेल्फी आरपीसी/एनकोड सोप उपयोग करता है। तो आपको उसी प्रारूप का उपयोग करने के लिए डेल्फी को बताना होगा। आप में soLiteralParams निर्दिष्ट करके ऐसा कर सकते हैं।

+0

मैंने अभी तक यह कोशिश की है। यह –

+0

@ डारिन की मदद नहीं करता है: क्या आप कोड स्टेटमेंट भी पोस्ट कर सकते हैं जो THTTPRIO.converter.Options में solietralPrams निर्दिष्ट करता है? – pradeeptp

संबंधित मुद्दे