2011-10-26 29 views
44

एपीआई मैं फोन करने के लिए कोशिश कर रहा हूँ के माध्यम से बाकी एपीआई के एक खाली शरीर की आवश्यकता है कि मैं एक पोस्ट है, लेकिन एक खाली शरीर के साथ। मैं डब्ल्यूसीएफ वेब एपीआई एचटीपी क्लाइंट का उपयोग करने के लिए नया हूं और मुझे ऐसा लिखने वाला कोड नहीं दिख रहा है जो खाली शरीर के साथ एक पोस्ट करेगा। मुझे कुछ HttpContent.CreateEmpty() विधि के संदर्भ मिलते हैं, लेकिन मुझे नहीं लगता कि यह वेब एपीआई HttpClient कोड के लिए है क्योंकि मुझे वह विधि नहीं मिल रही है।पोस्ट HttpClient

+0

HttpContent.CreateEmpty वर्ष HttpClient प्रोटोटाइप कि बाकी स्टार्टर किट का हिस्सा था से था। दुर्भाग्य से नए HttpClient में कोई समकक्ष नहीं है। –

उत्तर

40

उपयोग StringContent या ObjectContent जो HttpContent से निकाले जाते हैं या आप HttpContent रूप null (this comment देखें) का उपयोग कर सकते हैं।

Task<HttpResponseMessage> task = client.PostAsync(url, null); 
+2

एक खाली स्ट्रिंग के साथ स्ट्रिंगकंटेंट का उपयोग करना। धन्यवाद! –

+0

ऐसा लगता है कि यह केवल .NET Framework 4.5 में है? http://msdn.microsoft.com/en-us/library/system.net.http.stringcontent(v=VS.110).aspx – dan

+0

यह डब्ल्यूसीएफ वेब एपीआई के साथ भेज देगा लेकिन मुझे लगता है कि कुछ "अच्छे हिस्से" इसे ढांचे में ही बना देगा। –

-4

मैं यह है कि वे सभी URL टेम्प्लेट में फिट स्वतः यदि आपका वेब विधि कोई पैरामीटर है या क्या करता है लगता है।

उदाहरण के लिए इस घोषणा खाली शरीर भेजता है:

[OperationContract] 
    [WebGet(UriTemplate = "mykewlservice/{emailAddress}", 
    RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, 
    BodyStyle = WebMessageBodyStyle.Wrapped)] 
    void GetStatus(string emailAddress, out long statusMask); 
+0

मैं एक खाली शरीर भेजने की कोशिश कर रहा हूँ। HttpClient.Post() विधि के लिए एक यूआरआई और एक HttpContent वस्तु की आवश्यकता है। मैं कुछ भी नहीं भेजना चाहता हूं जब मैं HttpContent के रूप में पास करने के लिए नहीं हूँ। –

+0

तो आप डब्ल्यूसीएफ का उपयोग नहीं कर रहे हैं। ... HttpWebRequest अनुरोध = (HttpWebRequest) WebRequest.Create: यह और भी आसान है ("http: // ..."); अनुरोध। विधि = "पोस्ट"; HttpWebResponse respose = (HttpWebResponse) request.GetResponse(); ... आप प्रतिक्रिया –

+1

में परिणाम मैं HttpClient उपयोग कर रहा हूँ, नहीं HttpWebRequest। एक खाली स्ट्रिंग के साथ स्ट्रिंगकंटेंट का उपयोग करना काम किया। –

27

इस से पहले, बस इसे सरल रखने के क्या

टास्क कार्य = client.PostAsync (यूआरएल, नल);

अनुरोध निकाय में शून्य जोड़ता है, जो डब्ल्यूएसओ 2 पर विफल रहा। इसके साथ प्रतिस्थापित:

कार्य कार्य = क्लाइंट.पोस्टएसिंक (यूआरएल, नया {});

और काम किया।

+0

यह स्वीकृत उत्तर से क्लीनर है, और इसे वोट दिया जाना चाहिए। –

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