2009-06-26 15 views
9

क्या किसी ने बिंग मैप वेब सर्विसेज (पूर्व में वर्चुअल अर्थ वेब सर्विसेज) डेल्फी के साथ काम कर लिया है?डेल्फी के साथ बिंग मैप वेब सेवाओं का उपयोग करने वाला कोई भी व्यक्ति?

अब तक मेरे अनुभवों (डेल्फी और विजुअल स्टूडियो सी # का उपयोग करके) के आधार पर, मैं इसे छोड़ने और मैपपॉइंट वेब सेवा के साथ जाने के लिए तैयार हूं जब तक कि बिंग मैप्स वेब सर्विसेज के भविष्य के संस्करण बाहर नहीं आते। हालांकि, मैंने सोचा कि मैं यहां एक अंतिम उपाय के रूप में एक प्रश्न पोस्ट करूंगा ...

मैंने टोकन सेवा और जियोकोड सेवा डब्ल्यूएसडीएल दस्तावेज आयात किए।

मैं सफलतापूर्वक टोकन सेवा से टोकन प्राप्त करने में सक्षम था, लेकिन Geocode सेवा को बिल्कुल काम करने में असमर्थ रहा है। यह हमेशा निम्न त्रुटि संदेश देता है: एंडपॉइंट डिस्प्लेचर पर कॉन्ट्रैक्टफ़िल्टर विसंगति के कारण, एक्शन '' के साथ संदेश रिसीवर पर संसाधित नहीं किया जा सकता है। यह प्रेषक और रिसीवर के बीच एक अनुबंध विसंगति (प्रेषक और रिसीवर के बीच बेमेल कार्रवाई) या बाध्यकारी/सुरक्षा विसंगति के कारण हो सकता है। जांचें कि प्रेषक और रिसीवर के पास एक ही अनुबंध है और एक ही बाध्यकारी है (सुरक्षा आवश्यकताओं सहित, उदाहरण के लिए संदेश, परिवहन, कोई नहीं)।

मैंने देखा डेल्फी SOAPAction हेडर के लिए एक मूल्य को निर्दिष्ट नहीं किया गया था, तो मैं "http://staging.dev.virtualearth.net/webservices/v1/geocode/contracts/IGeocodeService/Geocode" निर्दिष्ट करने की कोशिश की और बदले में निम्न त्रुटि संदेश मिल गया: एक आंतरिक त्रुटि के कारण

सर्वर अनुरोध को संसाधित करने में असमर्थ था । त्रुटि के बारे में अधिक जानकारी के लिए, या तो क्लाइंट को अपवाद जानकारी भेजने के लिए, या Microsoft .NET Framework के अनुसार ट्रेसिंग चालू करने के लिए सर्वर पर IncludeExceptionDetailInFaults (या तो ServiceBehaviorAttribute से या < सेवा Debug > कॉन्फ़िगरेशन व्यवहार से) चालू करें। 3.0 एसडीके दस्तावेज और सर्वर ट्रेस लॉग का निरीक्षण करें।

नीचे मेरा डेल्फी कोड और कच्चा एक्सएमएल भेजा जा रहा है, तो कच्चे एक्सएमएल को माइक्रोसॉफ्ट के नमूना सी # कोड से इसी तरह की कॉल द्वारा भेजा जा रहा है। एक्सएमएल में कई अंतर हैं, लेकिन मुझे यकीन नहीं है कि क्या अंतर महत्वपूर्ण है। में सी # जियोकोड एक्सएमएल उत्पादित: वहाँ किसी भी बात यह है कि NS2 से मेल खाती है होना करने के लिए प्रकट नहीं होता है -

var 
    Service: IGeocodeService; 
    Request: Geocode; 
    Response: GeocodeResponse3; 
    ResponseIndex: Integer; 
    Token: WideString; 
    Filters: ArrayOfFilterBase; 
begin 
    Token := GetToken; 

    Service := GetIGeocodeService; 

    Request := Geocode.Create; 
    try 
    Request.request := GeocodeRequest.Create; 

    Request.request.Credentials := GeocodeService.Credentials.Create; // Freed by GeocodeRequest class 
    Request.request.Credentials.Token := Token; 

    Request.request.Query := AddressEdit.Text; 

    Request.request.Options := GeocodeOptions.Create; 

    SetLength(Filters, 1); 
    Filters[ 0 ] := ConfidenceFilter.Create; 
    ConfidenceFilter(Filters[ 0 ]).MinimumConfidence := GeocodeService.High_; 

    Request.request.Options.Filters := Filters; 

    Response := Service.Geocode(Request); 
    try 
     for ResponseIndex := Low(Response.GeocodeResult.Results) to High(Response.GeocodeResult.Results) do 
     begin 
     OutputMemo.Lines.Add(Response.GeocodeResult.Results[ ResponseIndex ].DisplayName); 
     end; 
    finally 
     Response.Free; 
    end; 
    finally 
    Request.Free; 
    end; 
end; 


<?xml version="1.0"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> 
    <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:NS2="http://dev.virtualearth.net/webservices/v1/geocode/contracts" xmlns:NS3="http://dev.virtualearth.net/webservices/v1/geocode" xmlns:NS4="http://dev.virtualearth.net/webservices/v1/common"> 
     <NS1:Geocode xmlns:NS1="http://dev.virtualearth.net/webservices/v1/geocode/contracts"> 
      <parameters href="#1"/> 
     </NS1:Geocode> 
     <NS2:Geocode id="1" xsi:type="NS2:Geocode"> 
      <request href="#2"/> 
     </NS2:Geocode> 
     <NS3:request id="2" xsi:type="NS3:GeocodeRequest"> 
      <Credentials href="#3"/> 
      <Options href="#4"/> 
      <Query xsi:type="xsd:string">Some Address</Query> 
     </NS3:request> 
     <NS4:Credentials id="3" xsi:type="NS4:Credentials"> 
      <Token xsi:type="xsd:string">cbYkKgNlrsGnZbn3HRP7Xp5LJMv3RR_5qECwgB792COfY3EPmviaDpZ4mmD3fDP1Osc6fWUkTptog7bfgM73bA2</Token> 
     </NS4:Credentials> 
     <NS3:Options id="4" xsi:type="NS3:GeocodeOptions"> 
      <Filters xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="NS3:FilterBase[1]"> 
       <item href="#5"/> 
      </Filters> 
     </NS3:Options> 
     <NS3:ConfidenceFilter id="5" xsi:type="NS3:ConfidenceFilter"> 
      <MinimumConfidence xsi:type="NS4:Confidence">High</MinimumConfidence> 
     </NS3:ConfidenceFilter> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Body> 
     <Geocode xmlns="http://dev.virtualearth.net/webservices/v1/geocode/contracts"> 
      <request xmlns:a="http://dev.virtualearth.net/webservices/v1/geocode" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
       <Credentials xmlns="http://dev.virtualearth.net/webservices/v1/common"> 
        <ApplicationId i:nil="true"/> 
        <Token>pezCDpJoxdCG63NQdJUGkTrYYalnuSQDwuIC9FvheFAd9MIPO75qX9n7il0dx3eTEHlN2877PzN1_6YbQDL5tg2</Token> 
       </Credentials> 
       <Culture i:nil="true" xmlns="http://dev.virtualearth.net/webservices/v1/common"/> 
       <ExecutionOptions i:nil="true" xmlns="http://dev.virtualearth.net/webservices/v1/common"/> 
       <UserProfile i:nil="true" xmlns="http://dev.virtualearth.net/webservices/v1/common"/> 
       <a:Address i:nil="true" xmlns:b="http://dev.virtualearth.net/webservices/v1/common"/> 
       <a:Options> 
        <a:Count i:nil="true"/> 
        <a:Filters> 
         <a:FilterBase i:type="a:ConfidenceFilter"> 
          <a:MinimumConfidence>High</a:MinimumConfidence> 
         </a:FilterBase> 
        </a:Filters> 
       </a:Options> 
       <a:Query>1 Microsoft Way, Redmond, WA</a:Query> 
      </request> 
     </Geocode> 
    </s:Body> 
</s:Envelope> 

उत्तर

3

मेरे सबसे अच्छा अनुमान है कि डेल्फी भी कई जियोकोड तत्वों का निर्माण किया जा रहा है है। आप XML रोकना और इसे बदलने के इतना है कि यह इस, कौन जानता है की तरह लग रहा कर सकते हैं - यह काम कर सकते हैं:

... 
    <NS1:Geocode xmlns:NS1="http://dev.virtualearth.net/webservices/v1/geocode/contracts"> 
     <parameters href="#2"/> 
    </NS1:Geocode> 
    <NS3:request id="2" xsi:type="NS3:GeocodeRequest"> 
    ... 

अन्य समस्या हो सकती है कि बिंग सेवा रास्ता डेल्फी सोप अनुरोध का आयोजन का समर्थन नहीं करता ।

यह काम नहीं करता है, शायद आप एक और एसओएपी लाइब्रेरी पा सकते हैं जिसका उपयोग आप डेल्फी के साथ कर सकते हैं - शायद सी या कॉम इंटरफ़ेस के साथ लाइब्रेरी को लपेटने का प्रयास कर रहे हैं।

+0

धन्यवाद, मैं कुछ इसी तरह की कोशिश की थी इससे पहले, लेकिन मैं सिर्फ इसे फिर से करने की कोशिश की कोई भाग्य के साथ। –

1

मेरे पास एक ही समस्या है। मैं डेल्फी 2006 चलाता हूं, कमांड मोड में WSDLImp.exe का उपयोग करता हूं; आयात कार्य प्राप्त करने के लिए 2006 के आवश्यक संस्करण 11.0। तुम क्या इस्तेमाल करते हो? हमारे पास RemObjects, संस्करण 6 का प्रयास करने का इरादा है। कोई अनुमान है कि अगर यह बेहतर काम करेगा?

चीयर्स, लार्स

+0

मैं डेल्फी 2007 का उपयोग कर रहा हूं। मुझे यह जानने में बहुत दिलचस्पी होगी कि क्या आपके पास RemObjects के साथ कोई भाग्य है। मैंने इस परियोजना पर कुछ हफ्तों तक काम नहीं किया है, लेकिन मुझे उम्मीद है कि हम पुराने मैपपॉइंट एपीआई का उपयोग तब तक करेंगे जब तक कि बिंग मैप एपीआई परिपक्व न हो जाए। –

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

  • कोई संबंधित समस्या नहीं^_^