2012-01-23 15 views
7
के लिए URL endpoint प्राप्त करने में असमर्थ

मैं डेल्फी XE2 करने के लिए एक डेल्फी 2007 कार्यक्रम परिवर्तित कर रहा हूँ और निम्न त्रुटि संदेश के साथ एक समस्या हो रही:डेल्फी XE2 HTTPRIO सेवा/पोर्ट

सेवा के लिए URL endpoint प्राप्त करने में असमर्थ/पोर्ट "/" डबल्यूएसडीएल से 'http: // .....'

सेवा मैं जोड़ने हूँ करने के लिए डेल्फी 2007

में लिखा है 2007 को यह संकलित करता है तथा समस्याओं के बिना चलाता है। एक ही कोड के साथ XE2 पर यह त्रुटि के साथ आता है।

मैंने नए डब्लूएसडीएल आयातक का उपयोग डिफ़ॉल्ट सेट के साथ इंटरफेस को दोबारा आयात करने की कोशिश की है लेकिन कोई खुशी नहीं है।

मैंने पोर्ट और सेवा नामों को सेट करने का भी प्रयास किया है और त्रुटि बनी हुई है। सुनिश्चित नहीं है कि कौन सी जानकारी उपयोग की जा रही है लेकिन जहां तक ​​मैं कह सकता हूं कि यह कनेक्ट हो रहा है।

<message name="CheckRegistration10Request"> 
    <part name="centreId" type="xs:int"/> 
    <part name="centreName" type="xs:string"/> 
    <part name="checkActiveOnly" type="xs:boolean"/> 
</message> 
<message name="CheckRegistration10Response"> 
    <part name="return" type="xs:boolean"/> 
</message> 

अलावा, डबल्यूएसडीएल आयात करते समय एक HTTPRIO पर फेंकने और

साथ विधि कॉल करने से:

इस विधि के आपरेशन है कि मैं

<operation name="CheckRegistration"> 
    <soap:operation soapAction="urn:ScubaUpdateWSIntf-IScubaUpdateWS#CheckRegistration" style="rpc"/> 
    <input> 
    <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  namespace="urn:ScubaUpdateWSIntf-IScubaUpdateWS"/> 
    </input> 
    <output> 
    <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:ScubaUpdateWSIntf-IScubaUpdateWS"/> 
    </output> 
</operation> 

यह उपयोग कर रहा हूँ संदेश है

(HTTPRIO1 as IScubaUpdateWS).CheckRegistration(strtoint(tcentre),tcentreName,true); 

मुझे नहीं लगता कि मैं कुछ और कर रहा हूं और जैसा कि मैंने कहा है कि उसी कोड डेल्फ़ पर काम करता है मैं 2007.

+2

डिजाइन समय में, जब आप HTTPRIO.WSDLLocation गुण सेट है क्या आप HTTPRIO.Service और HTTPRIO.Port गुणों का चयन करने में सक्षम हैं? आपको डिज़ाइन-टाइम पर सेवा और पोर्ट सेट करने में सक्षम होना चाहिए, यदि नहीं, तो URL के साथ कुछ गड़बड़ हो सकती है। मुझे यह समस्या कई बार मिली है, और ऐसा लगता है जैसे ही मैंने इसे डिज़ाइन-टाइम पर ठीक से सेट किया है, तो त्रुटि दूर हो जाती है .. –

+0

हाय जॉन, धन्यवाद, पोर्ट डेल्फी 2007 के विचार में खाली है और साथ ही साथ Xe2 में। इसे सेट करना सिर्फ त्रुटि संदेश को बदलता है। मैंने अभी एक और डेल्फी डब्लूएसडीएल से कनेक्ट करने की कोशिश की है और एक ही समस्या है। मैं एक सी # डब्लूएसडीएल या अमेज़ॅन डीएलएल में से एक से कनेक्ट करने की कोशिश करने जा रहा हूं यह देखने के लिए कि क्या मैं यह निर्धारित कर सकता हूं कि क्या यह सिर्फ डेल्फी wsdls है जो इस मुद्दे का कारण बन रहा है। मैं बाद में वापस पोस्ट करूंगा। –

+0

बस पुष्टि की है कि Xe2 एक .NET वेब सेवा से कनेक्ट हो सकता है। मेरी डेल्फी वेब सेवाओं में कुछ होना चाहिए जो एंडपॉइंट त्रुटि उत्पन्न कर रहा है। –

उत्तर

2

हल हो गया। अच्छी तरह की! ऐसा लगता है कि डेल्फी XE2 2 सेवाओं को ढूंढ रहा है जहां डेल्फी 2007 एक ढूंढ रहा है। मैं जिस प्रोग्राम का उपयोग कर रहा हूं वह रजिस्ट्री से WSDL स्थान पढ़ रहा है और इसे सेट कर रहा है। डेल्फी 2007 पर यह ठीक है क्योंकि यह एक और एकमात्र सेवा ले रहा है और वह चयनित पोर्ट/सेवा बना रहा है। डेल्फी एक्सई 2 पर यह डब्लूएसडीएल स्थान को रीसेट कर रहा है जिसके परिणामस्वरूप पोर्ट और सेवा को मंजूरी दे दी गई है। सही दिशा में मुझे इंगित करने के लिए @ जॉन एस्ले के लिए धन्यवाद। हल करने के लिए अब मुझे WSDL स्थान बदलने के बाद निम्न कोड का उपयोग करना है। नहीं यकीन है कि यह हर एक के लिए काम करेंगे के रूप में मैं पहली प्रविष्टि संभालने कर रहा हूँ, एक है कि आवश्यक है

servicenames:=Tdomstrings.Create; 
portnames:=Tdomstrings.Create; 
HTTPRIO1.WSDLItems.GetServices(servicenames); 
if servicenames.count>0 then 
begin 
HTTPRIO1.Service:=servicenames[0]; 
HTTPRIO1.WSDLItems.GetPortsForService(servicenames[0],portnames); 
if portnames.count>0 then 
    HTTPRIO1.Port:=portnames[0]; 
end; 
servicenames.clear; 
servicenames.Free; 
portnames.clear; 
portnames.Free; 

धन्यवाद लोग

+0

रिचर्ड, उत्तर के लिए टैंक लेकिन जब मैंने उपरोक्त कोड का उपयोग किया, तो कोई समस्या नहीं मिली, कोई सक्रिय दस्तावेज नहीं मिला। इसलिए मैंने इसे सक्रिय स्पष्ट किया। – SSE

+0

रनटाइम पर गुणों को सेट करते समय "कोई सक्रिय दस्तावेज़" कैसे हल करें? – NizamUlMulk

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