2010-01-23 11 views
5

मुझे इंडी आईडीएचटीपी पोस्ट विधि में समस्या है। डेल्फी 2007 के साथ संकलित समारोह कॉलआरपीसी() ठीक काम करता है लेकिन डेल्फी 2010 के साथ संकलित एक ही कोड अपवाद उठाता है।डेल्फी 2010 में इंडी आईडीएचटीपी पोस्ट के साथ समस्या

मुझे डेल्फी 2007 इंडी टीआईडीएचटीपी को डेल्फी 2010 इंडी टीआईडीएचटीपी में बदलने पर क्या विचार करना चाहिए?

function CallRpc(const sURL, sXML: string): string; 
var 
    SendStream : TStream; 
    IdHttp  : TIdHttp; 
begin 
    SendStream := TMemoryStream.Create; 
    IdHttp := TIdHttp.Create(nil); 
    try 
     IdHttp.Request.Accept  := '*/*'; 
     IdHttp.Request.ContentType := 'text/sXML'; 
     IdHttp.Request.Connection := 'Keep-Alive'; 
     IdHttp.Request.ContentLength := Length(sXML); 

     StringToStream(sXML, SendStream); 
     SendStream.Position := 0; 

     Result := IdHttp.Post(sURL, SendStream); 
    finally 
    IdHttp.Free; 
    SendStream.Free; 
    end; 
end; 

अलावा 2009/01/25:

<?xml version='1.0' encoding='us-ascii'?> 
<!DOCTYPE Error [ <!ELEMENT Error (ErrorMessage,DebuggingInfo*)> <!ATTLIST Error Date CDATA #REQUIRED Time CDATA #REQUIRED> <!ELEMENT ErrorMessage (#PCDATA)> <!ELEMENT DebuggingInfo (#PCDATA)> ] > 
<Error Date='01/25/2010' Time='08:57:12'> 
<ErrorMessage> 
    XML SERVER ERROR: There was a SYSTEM ERROR error in the Incoming XML Response: $ZE=&lt;UNDEFINED&gt;lexan+196^%eXMLLexAnalyzer 
</ErrorMessage> 

समाधान 2009/01/26:

EIdConnClosedGracefully

प्रतिक्रिया यह है:

अपवाद यह है

अंत;

+0

आपका स्वागत नहीं है। कृपया विवरण जैसे कि ** ** ** अपवाद प्राप्त करने के लिए याद रखें ताकि पाठकों को अनुमान लगाने की आवश्यकता न हो। –

+0

जब मैं अपने कोडिंग कंप्यूटर को फिर से उपयोग करने में सक्षम हूं और त्रुटि दोहराता हूं तो मैं अधिक जानकारी शामिल करूंगा। – pKarelian

उत्तर

1

देखें कि एसएक्सएमएल उत्तर देने से कोई फर्क पड़ता है या नहीं।

शायद स्ट्रिंग यूटीएफ -16 में या तो स्ट्रीम हो गई है।

+0

क्या आपका मतलब है कि D2007 स्ट्रिंग D2010 स्ट्रिंग से अलग है? – pKarelian

+2

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

+0

धन्यवाद। मैं अपना कोड ठीक करने की कोशिश करूंगा। – pKarelian

4

सामग्री लम्बाई ऑक्टेट्स में है और आपकी स्ट्रिंग लंबाई वर्णों में है। डेल्फी 200 9 में आकार (चार) = 2 के बाद से यह एक मेल नहीं है!

शायद आपके एक्सएमएल 8 स्ट्रिंग से/अपने एक्सएमएल को कन्वर्ट करना बेहतर है। कुछ अनुप्रयोग यूएससी 2 यूनिकोड प्रारूप का समर्थन नहीं करेंगे।

आपको परिणामस्वरूप धारा के आकार को सामग्री लम्बाई के रूप में आपूर्ति करनी चाहिए।

अभी तक बेहतर: ContentLength आपूर्ति और .. इंडी यह तुम्हारे लिए क्या करते हैं ओवरफ्लो स्टैक करने के लिए

+0

धन्यवाद। अच्छा संकेत – pKarelian

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