2009-03-10 13 views
14

मुझे इसे काम करने में परेशानी हो रही है इसलिए किसी भी मदद की सराहना की जाएगी! असल में, request.body तो जैसे वेब सेवा के लिए मान्य XML शामिल हैं:मैं नेट :: HTTP :: पोस्ट का उपयोग कर एक्सएमएल को रीस्टफुल वेब सेवा में कैसे पोस्ट करूं?

<somedata> 
<name>Test Name 1</name> 
<description>Some data for Unit testing</description> 
</somedata> 

... लेकिन सेवा खाली एक्सएमएल देता है। ध्यान दें कि आईडी क्षेत्र का सुझाव दिया जाता है कि यह वास्तव में डेटाबेस हिट करता है, लेकिन नाम और विवरण क्षेत्रों के बराबर हैं:

<somedata> 
<id type='integer'>1</id> 
<name nil='true'></name> 
<description nil='true'></description> 
</somedata> 

मैं मैन्युअल शोकहारा सेवा पोस्टर का उपयोग कर परीक्षण किया है और यह ठीक काम करता है।

यहाँ कोड है:

url = URI.parse('http://localhost:3000/someservice/') 
request = Net::HTTP::Post.new(url.path) 
request.body = "<?xml version='1.0' encoding='UTF-8'?><somedata><name>Test Name 1</name><description>Some data for Unit testing</description></somedata>" 
response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)} 

#Note this test PASSES! 
assert_equal '201 Created', response.get_fields('Status')[0] 

किसी को भी किसी भी सुराग क्यों एक्सएमएल पोस्ट में डेटा कायम नहीं कर रहा है है?

+1

यह सेवा के लिए कोड देखने में मदद करेगा। –

उत्तर

8

सेवा के बारे में कुछ भी जानने के बिना, यह सिर्फ एक अनुमान है, लेकिन ... सेवा एक विशिष्ट शीर्षलेख की उम्मीद है जो पोस्टर सेटिंग कर रहा है और आप नहीं हैं?

+7

हाँ! धन्यवाद, मुझे निम्नलिखित पंक्ति जोड़ने की आवश्यकता है और यह काम करता है: request.content_type = 'text/xml' – jensendarren

1

अगर मैं तुम्हें थे, मैं Wireshark, tcpflow या कुछ अन्य स्निफर का उपयोग सटीक डेटा पोस्टर और अपने अनुप्रयोग को देखने के लिए भेज रहे हैं, और यह सुनिश्चित करें कि वे समान कर रहे हैं चाहते हैं। मैंने ऐसी सेवाओं को देखा है जो अजीब चीज़ों, जैसे व्हाइटस्पेस या उपयोगकर्ता एजेंट से संवेदनशील थे।

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