c# - वेब एपीआई सेवा में पोस्ट में जेसन भेजना त्रुटि




asp.net .net (4)

  1. आपको हेडर प्रॉपर्टी Content-Type:application/json जोड़ना होगा
  2. जब आप किसी POST अनुरोध विधि इनपुट पैरामीटर को परिभाषित करते हैं जिसे [formbody] रूप में एनोटेट किया जाना चाहिए, उदाहरण के लिए :

    [HttpPost]
    public HttpResponseMessage Post([formbody]ActivityResult ar)
    {
      return new HttpResponseMessage(HttpStatusCode.OK);
    }
    
  3. कोई JSON इनपुट डेटा कच्चा डेटा होना चाहिए।

https://code.i-harness.com

मैं वेब एपीआई का उपयोग कर एक वेब सेवा बना रहा हूं। मैंने एक साधारण वर्ग लागू किया

public class ActivityResult
{
    public String code;
    public int indexValue;
    public int primaryCodeReference;
}

और फिर मैंने अपने नियंत्रक के अंदर लागू किया है

[HttpPost]
public HttpResponseMessage Post(ActivityResult ar)
{
    return new HttpResponseMessage(HttpStatusCode.OK);
}

लेकिन जब मैं पीओएसटी में फाइल एपीआई पास करता हूं तो फाइल जेसन:

{"code":"XXX-542","indexValue":"3","primaryCodeReference":"7"}

मुझे निम्न त्रुटि संदेश प्राप्त होता है:

{
    "Message": "The request entity's media type 'text/plain' is not supported for this resource.",
    "ExceptionMessage": "No MediaTypeFormatter is available to read an object of type 'ActivityResult' from content with media type 'text/plain'.",
    "ExceptionType": "System.Net.Http.UnsupportedMediaTypeException",
    "StackTrace": "   in System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n   in System.Net.Http.HttpContentExtensions.ReadAsAsync(HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n   in System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)"
}

मैं क्या गलत कर रहा हूं?


HTTP अनुरोध में आपको सामग्री-प्रकार को सेट करने की आवश्यकता है: Content-Type: application/json

तो यदि आप फिडलर क्लाइंट का उपयोग कर रहे हैं तो Content-Type: application/json जोड़ें Content-Type: application/json अनुरोध हेडर पर


एक और युक्ति ... संगीतकार / पार्स किए गए टैब पर टेक्स्टबॉक्स फ़ील्ड में "सामग्री-प्रकार: एप्लिकेशन / जेसन" ... कहां जोड़ें। वहाँ पहले से ही 3 लाइनें भरे हैं, इसलिए मैंने इस सामग्री-प्रकार को चौथी पंक्ति के रूप में जोड़ा। इसने पोस्ट काम किया।


कृपया जांचें कि क्या आप GET बजाय POST रूप में पास कर रहे हैं। यदि ऐसा है तो आप ऊपर पोस्ट की गई एक ही त्रुटि प्राप्त करेंगे।

$http({               
 method: 'GET',

इस संसाधन के लिए अनुरोध इकाई का मीडिया प्रकार 'टेक्स्ट / सादा' समर्थित नहीं है।







asp.net-web-api