2012-07-26 17 views
11

में वेब एपीआई नियंत्रक के लिए एक स्ट्रिंग पोस्ट करें मैं वेबएपीआई के लिए नया हूं और इसे सीखने की कोशिश कर रहा हूं। मेरे पास एक वेबएपीआई नियंत्रक है जिसके लिए मैं अपने यूनिट टेस्ट से वेब क्लाइंट का उपयोग करके एक स्ट्रिंग पोस्ट करने का प्रयास कर रहा हूं।एएसपी.NET 4.5 और वीएस 2012 आरसी

मैं नीचे दिए गए कोड का उपयोग करके अपने वेबएपीआई में एक स्ट्रिंग पोस्ट कर रहा हूं।

using (var client = new WebClient()) 
{ 
    client.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); 
    var result = client.UploadString(_webapiUrl, "POST", "hello"); 
} 

यहां मेरा नियंत्रक है।

[HttpPost] 
public byte[] Post(string value) 
{ 
    // Do something with value 
} 

मैं अपने नियंत्रक पर एक को तोड़ने बिंदु हिट कर सकते हैं, लेकिन यह किसी भी स्ट्रिंग पोस्ट प्रतीत नहीं होता है और मैं हमेशा शून्य मूल्य मिलता है। मूल्य प्राप्त करने के लिए मुझे क्या करना चाहिए?

धन्यवाद

उत्तर

10

सभी देखें आप प्राप्त करने की आवश्यकता एक मूल्य है, तो मूल्य से पहले = का उपयोग करें:

var result = client.UploadString(_webapiUrl, "POST", "=hello"); // NOTE '=' 
+4

धन्यवाद, यह [FromBody] के साथ एक्शन पैरामीटर उपसर्ग करके मेरे लिए काम करता है। यह WebAPI से वास्तव में अजीब व्यवहार है। – durbhakula

+0

क्या होगा यदि मान एक जेसन ऑब्जेक्ट है? – awe

2

सूचना कुंजी मान युग्म होता है मानों सर्वर को वापस पोस्ट करने के लिए ही बना है। कुंजी वही होनी चाहिए जैसा आप एक्शन विधि पैरामीटर में अपेक्षा करते हैं। इस मामले में आपकी कुंजी "VALUE"

[HttpPost] 
public byte[] Post(string value) 

मान पोस्ट करने के लिए निम्न कोड का उपयोग करें।

string URI = "http://www.someurl.com/controller/action"; 
string myParamters = "value=durbhakula"; 

using (WebClient wc = new WebClient()) 
{ 
    wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; 
    string HtmlResult = wc.UploadString(URI, myParameters); 
} 

अद्यतन

मैं अपनी गलती की ओर इशारा करते के लिए Aliostad धन्यवाद। वेब एपीआई में फॉर्म डेटा पोस्ट करते समय पैरामीटर नाम खाली होना चाहिए।

string myParamters = "=durbhakula"; 

इसके अलावा आपको अपनी क्रिया विधि में [फॉर्मबॉडी] विशेषता डालना होगा। FromBody विशेषता वेब एपीआई बताता है, अनुरोध शरीर से मूल्य को पढ़ने के लिए

[HttpPost] 
[ActionName("Simple")] 
public HttpResponseMessage PostSimple([FromBody] string value) 
{ 
.. 
.. 
} 

कृपया इस link

+0

यह वेब एपीआई में काम नहीं करेगा। http://aspnetwebstack.codeplex.com/discussions/359687 – Aliostad

+0

@Aliostad: मेरी गलती को इंगित करने के लिए धन्यवाद – Anand

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