2010-04-16 19 views
5

के लिए टाइमआउट के साथ समाप्त होता है हम एक एसओएपी webservice (अपाचे/PHP) विकसित कर रहे हैं। सभी छोटे आकार के कॉल के लिए अच्छी तरह से चलते हैं, लेकिन 1 एमबी साबुन कॉल के साथ (एचटीटीपीएस कॉल आकार 1 एमबी है) हमारे डेल्फी साबुन क्लाइंट सभी पीसी पर एक टाइमआउट के साथ बंद हो जाता है लेकिन एक, और हमारे PHP क्लाइंट डिफ़ॉल्ट_socket_timeout = 300 के साथ अच्छी तरह से चलते हैं, लेकिन स्टॉप default_socket_timeout = 60 के साथ "http शीर्षलेख लाने में त्रुटि" के साथ।सोप डेल्फी क्लाइंट 1 एमबी कॉल

हम डेल्फी के लिए टाइमआउट कैसे बदल सकते हैं? वास्तव में इस समय समाप्त एक Windows XP नेटवर्क लाइब्रेरी (Wininet.dll soaphttptrans.pas द्वारा कहा जाता है) में होने की

धन्यवाद
Cédric

उत्तर

5

वास्तव में यह आई 7 स्थापना के साथ एक समस्या थी: यह सभी नेटवर्क टाइमआउट को बदल देता है।

आईई 6 के साथ पीसी में 3600 सेकेंड टाइमआउट है, आईई 7 इसे 30 सेकेंड में बदल देता है। InternetQueryOption() का उपयोग यह दिखाएं, और InternetSetOption इसे बदलने में मदद करता है।

मेरे काम साथी के लिए बड़ा धन्यवाद, जो घंटों के लिए बग का शिकार करता है।

3

वहाँ SOAPHttpTrans में एक MaxSinglePostSize है लग रहे हैं। मुझे लगता है कि इसके साथ मुद्दों को याद है। यह एक सीमा नहीं है, लेकिन यदि आप खत्म हो गए हैं, या उस सीमा के तहत यह अलग-अलग व्यवहार करता है (भेजने के लिए भाग में टूट जाता है)। (मूल रूप से 32768 डिफ़ॉल्ट रूप से)। मुझे आशा है कि यदि आप व्यापक रूप से डी 2009/डी 2010 पर हैं तो आप उस आकार को जल्द ही हिट करेंगे। यह देखना दिलचस्प होगा कि क्या आप उस आकार के आसपास परेशानी में भाग लेते हैं। आप फिडलर का उपयोग कुछ आउटपुट कैप्चर करने के लिए कर सकते हैं (या ऑनबर्नपोस्ट इवेंट में हुक करें और सीरियलाइज्ड एक्सएमएल को स्वयं फ़ाइल में डंप करें) और देखें कि क्या आपने पहले देखा गया 1 एमबी की बजाय परेशानी में भाग लिया है या नहीं।

लेकिन वैसे भी, THTTPReqResp क्लास में SendTimeout और ReceiveTimeout के विकल्प हैं। उनको समायोजित करने का प्रयास करें।

इसके अलावा ... यदि आप डेल्फी2007 से पहले डेल्फी का उपयोग कर रहे हैं, तो आपको अपने साबुन पुस्तकालयों को अपडेट करना चाहिए। कहीं भी एक डाउनलोड है ... कई बग फिक्स, जिसमें एक ग़लत स्मृति समस्या शामिल है जो आपके ऐप को डीईपी द्वारा रोक दिया जाएगा।

+1

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