2012-12-19 16 views
5

, सी # ASP.NET MVC का उपयोग करते हुए जब एक Magento साइट पर एक वेब सेवा बुला:गलत HTTP शीर्षलेख शरीर के आकार के मानों से निपटने?

कभी कभी एक Magento साइट गलत HTTP हेडर भेज देंगे, विशेष रूप से शरीर के आकार के हैडर कह रही है कि शरीर बड़ा की तुलना में यह वास्तव में है। उदाहरण के लिए यह शरीर आकार = 1000 कह सकता है, लेकिन शरीर में केवल 99 9 बाइट होते हैं। हेडर गलत होने के बावजूद, शरीर सही है इसलिए मैं अभी भी इसे संसाधित करने में सक्षम होना चाहता हूं।

Connection closed by remote host 

कौन सा kindof समझ में आता है, क्योंकि इसके 1000 बाइट पढ़ने का प्रयास लेकिन इसकी वहाँ नहीं:

अब जब मैं सी # में है कि प्रतिक्रिया

var invoiceInfo = _magentoService.salesOrderInvoiceInfo(sessionId, invoiceId); 

यह एक अपवाद फेंकता है पढ़ने की कोशिश । और यह भी बदतर बनाने के लिए, कोड है कि शरीर पढ़ता नेट ढांचे के भीतर गहरे दफन है, तो मैं नहीं कर सकते इसे बदल:

[System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:Mage_Api_Model_Server_V2_HandlerAction", RequestNamespace="urn:Magento", ResponseNamespace="urn:Magento")] 
[return: System.Xml.Serialization.SoapElementAttribute("result")] 
public salesOrderInvoiceEntity salesOrderInvoiceInfo(string sessionId, string invoiceIncrementId) { 
    object[] results = this.Invoke("salesOrderInvoiceInfo", new object[] { 
       sessionId, 
       invoiceIncrementId}); // exception thrown here 
    return ((salesOrderInvoiceEntity)(results[0])); 
} 

मैं Magento साइट बदल नहीं सकते, या जो कुछ भी समस्या यह खड़ी कर रहा है ठीक (यह एक तीसरे पक्ष के वेबसर्वर)।

क्या कोई ऐसा कुछ है जो मैं अपने स्वयं के सी # कोड के व्यवहार को बदलने के लिए कर सकता हूं? मैं किसी भी तरह से शरीर के अंत तक पहुंचने पर रोकने के लिए मजबूर होना चाहता हूं और इस अपवाद को अनदेखा कर सकता हूं अगर यह मामला

+0

यह निश्चित रूप से Magento कोर टीम के लिए एक बग प्रतीत होता है, यह नहीं कि यह आपको सीधे मदद करता है। संबंधित: http://stackoverflow.com/questions/12792563/magento-soap-api-v2-response-content-length-incorrect – benmarks

+0

हाँ यह वास्तव में एक कष्टप्रद बग भी है - मैं केवल समस्या को अनदेखा करने का एक तरीका ढूंढ रहा हूं और वैसे भी शरीर को पढ़ें –

उत्तर

0

मुझे नहीं पता कि यह काम करेगा, लेकिन आपने कोड डालने का प्रयास किया है try/catch ब्लॉक और अपवाद को अनदेखा कर रहा है? results == null है?

इस तरह:

[System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:Mage_Api_Model_Server_V2_HandlerAction", RequestNamespace="urn:Magento", ResponseNamespace="urn:Magento")] 
[return: System.Xml.Serialization.SoapElementAttribute("result")] 
public salesOrderInvoiceEntity salesOrderInvoiceInfo(string sessionId, string invoiceIncrementId) { 
    try 
    { 
     object[] results = this.Invoke("salesOrderInvoiceInfo", new object[] { 
        sessionId, 
        invoiceIncrementId}); // exception thrown here 
    } 
    catch(Exception) {} 

    if(results != null && results.Count() > 0) return ((salesOrderInvoiceEntity)(results[0])); 

    throw new Exception("results is null"); 
} 
0

कोशिश यहां से समाधान (बदलते एपीआई endpoint api.php के लिए):
domain.com/index.php/api/v2_soap/index/wsdl/1

लिए: stackoverflow.com/a/36200828/1936722

मूल रूप से एपीआई यूआरएल बदल

domain.com/api/v2_soap/?wsdl=1