2013-07-26 6 views
5

मुझे जावा डब्ल्यूएस से बात करने में समस्याएं आ रही हैं। मैं प्रमाणीकरण के लिए क्लाइंट प्रमाणपत्रों के साथ बाध्यकारी "wsHttp बाइंडिंग" का उपयोग कर रहा हूं, संदेश एन्कोडिंग "टेक्स्ट" सेट है, नेट फ्रेमवर्क 4.0 है। सर्वर पक्ष जावा है और मेरे पास इसका कोई नियंत्रण नहीं है। कनेक्शन फिडलर के माध्यम से प्रक्षेपित किया जा रहा है (इस तरह मैं तार पर अनुरोध देखता हूं, "System.Net" का पता लगाने से कहीं अधिक उपयोगकर्ता अनुकूल है)।डब्ल्यूसीएफ क्लाइंट जावा डब्ल्यूएस से बात कर रहा है, अपवाद: सामग्री प्रकार एप्लिकेशन/एक्सओपी + एक्सएमएल; प्रतिक्रिया संदेश का प्रकार = "एप्लिकेशन/साबुन + एक्सएमएल"

अपवाद मैं निम्नलिखित है:

सामग्री प्रकार आवेदन/XOP + xml; प्रतिक्रिया संदेश का प्रकार = "एप्लिकेशन/साबुन + xml" बाइंडिंग के सामग्री प्रकार से मेल नहीं खाता है (एप्लिकेशन/साबुन + xml; charset = utf-8)।

अगर मैं "MTOM" के लिए संदेश एन्कोडिंग बदलने के लिए, तो अपवाद परिवर्तन:

सामग्री प्रकार आवेदन/XOP + xml; प्रतिक्रिया संदेश का प्रकार = "एप्लिकेशन/साबुन + xml" बाध्यकारी (मल्टीपार्ट/संबंधित; प्रकार = "एप्लिकेशन/xop + xml") के सामग्री प्रकार से मेल नहीं खाता है।

सर्वर अनुरोध के लिए "टेक्स्ट" और "माटम" संदेश एन्कोडिंग दोनों स्वीकार कर रहा है, और प्रतिक्रिया हमेशा एक ही होती है।

HTTP/1.1 200 OK 
X-Backside-Transport: OK OK 
Connection: Keep-Alive 
X-Powered-By: Servlet/3.0 
SOAPAction: "" 
Content-Type: application/xop+xml; type="application/soap+xml" 
Content-Language: en-US 
Date: Thu, 25 Jul 2013 13:05:09 GMT 
Content-Length: 628 

<?xml version="1.0" encoding="UTF-8"?> 
<env:Envelope ... </env:Envelope> 

सभी डॉक्स जो मैं पढ़ कर दिया गया है से, प्रतिक्रिया है कि वापस आ जा रही है नियमित रूप से साबुन संदेश और MTOM संदेश के बीच कहीं है: यह कच्चे प्रतिक्रिया है कि मैं सर्वर से हो रही है है। मैं यह कह रहा हूं क्योंकि मैंने जो भी उदाहरण देखा है, वह कहता है कि एमटीओएम अनुरोध और प्रतिक्रिया संचार के लिए लिफाफे के रूप में एमआईएम का उपयोग करती है: नियमित एसओएपी संदेश एक्सओपी पैकेज में लिफाफा है, और फिर यह एक्सओपी संदेश एमआईएमई के साथ लिफाफा है। यहां तक ​​कि W3C अनुशंसा XOP संकुल के लिए MIME का उपयोग करती है: W3C: XML-binary Optimized Packaging। इस लिंक से अंश:

Content-Type: Multipart/Related;boundary=... 

मैं उपकरण का उपयोग कर "soapUI" (जावा में लिखा, उपलब्ध से "www.soapui.org"), सेवा कॉल सफलतापूर्वक क्रियान्वित किया जाता है और प्रतिक्रिया किसी भी बिना पार्स किया गया है वेब सेवा को फोन करने का प्रयास करें, तो मुसीबत।

एफवाईआई, यह MSDN WCF forum से एक क्रॉस-पोस्ट है, लेकिन अभी तक कोई प्रतिक्रिया नहीं है।

किसी भी विचार के लिए अग्रिम में की सराहना की है, धन्यवाद,

एलेक्स

+0

मुझे एक ही समस्या का सामना करना पड़ रहा है। कस्टम बाइंडिंग बनाना और संदेश सेट करना Version = "Soap12" मेरे लिए काम नहीं करता है। एक अंतर मैं देख सकता हूं कि मेरा वेब सेवा कॉल https है लेकिन यह पोस्ट http के लिए है। –

+0

क्या आपको कोई समाधान मिला? मुझे भी यही तकलीफ़ है। लेकिन बाध्यकारी विन्यास पहले जवाब में सुझाव दिया गया है कि यह web.config के लिए मान्य नहीं है। –

+0

HTTP बनाम HTTPS कोई फर्क नहीं पड़ता: यह केवल परिवहन विवरण है। मुद्दा संदेश का स्वरूपण कर रहा है।मेरी समस्या यह थी कि सरकारी इकाई कुछ जावा सर्वर (आईबीएम वेबस्पियर स्टैक का उपयोग करके) का उपयोग कर रही थी और उनका ढेर गैर-अनुरूप संदेश तैयार कर रहा था। मेरे मामले में दो विकल्प थे: 1.) सोपूआई का उपयोग बाहरी ऐप के रूप में करें जो संदेश डाउनलोड करेगा और फिर एक्स # में एक्सएमएल को पार्स करेगा।) कच्चे एक्सएमएल को संपादित करें जो नेटवर्क के माध्यम से आता है और मानकों के अनुरूप संदेश एक्सएमएल बदलता है -> यह जिस तरह से सब कुछ सी # में किया गया था। – alemarko

उत्तर

0

messageEncoding="Mtom" और wsHTTP एक के बजाय basicHTTPBinding के लिए बाध्य विन्यास में संदेशों के लिए एन्कोडिंग की स्थापना ...

आशा है कि यह मदद करता है कोशिश करो!

2

मैं भी सीएक्सएफ का उपयोग कर रहा हूं, और इसमें सी # क्लाइंट है। अपनी बाध्यकारी सेटिंग को संशोधित करने का प्रयास करें, textMessageEncoding को mtomMessageEncoding के साथ बदलें। कुछ इस तरह:

<binding name="yourSoapBinding"> 
    <mtomMessageEncoding messageVersion="Soap12"/> 
    <httpTransport /> 
</binding> 
संबंधित मुद्दे