ওয়েব পিপিএস পরিষেবাতে জেসন প্রেরণে ত্রুটি Error


90

আমি ওয়েব এপিআই ব্যবহার করে একটি ওয়েব পরিষেবা তৈরি করছি। আমি একটি সাধারণ ক্লাস প্রয়োগ করেছি

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)"
}

আমি কি ভুল করছি?


9
ক্লায়েন্টের কাছ থেকে পে-লোড গ্রহণের জন্য আপনাকে "অ্যাপ্লিকেশন / জেসন" এর একটি শিরোনাম যুক্ত করতে হবে।
অ্যাডাম জুকারম্যান

আমি আমার HTTP অনুরোধে শিরোনামগুলি সঠিকভাবে সেট করেছি। : তবে সমস্যা সার্ভার সাইড হবে বলে মনে হয় dropbox.com/s/xlidnnybs8v6d0u/Cattura.JPG
GVillani82

4
দেখে মনে হচ্ছে আপনি কেবল Acceptশিরোনাম সেট করছেন application/json। আপনাকে এখানে Content-Typeশিরোনামও সেট করতে হবে application/json
ব্রায়ান রজার্স

উত্তর:


186

এইচটিটিপি রিকুয়েস্টে আপনাকে এতে কন্টেন্ট-টাইপ সেট করতে হবে: Content-Type: application/json

সুতরাং আপনি যদি ফিডলার ক্লায়েন্টটি Content-Type: application/jsonঅনুরোধ শিরোনামে যোগ করেন তবে


2
  1. আপনাকে অবশ্যই হেডার সম্পত্তি যুক্ত করতে হবে Content-Type:application/json
  2. আপনি যখন কোনও পোষ্ট অনুরোধ পদ্ধতির ইনপুট প্যারামিটার সংজ্ঞায়িত করেন [FromBody], যেমন :

    [HttpPost]
    public HttpResponseMessage Post([FromBody]ActivityResult ar)
    {
      return new HttpResponseMessage(HttpStatusCode.OK);
    }
    
  3. যে কোনও JSON ইনপুট ডেটা অবশ্যই কাঁচা ডেটা হতে হবে ।


1

অন্য টিপস ... যেখানে "বিষয়বস্তুর ধরণ: অ্যাপ্লিকেশন / জসন" যুক্ত করতে হবে ... রচয়িতা / পার্সড ট্যাবে পাঠ্যবক্স বাক্সে। সেখানে ইতিমধ্যে 3 টি লাইন ভরাট রয়েছে, তাই আমি 4 র্থ লাইন হিসাবে এই সামগ্রী-প্রকারটি যুক্ত করেছি। যে পোস্ট কাজ করে।


0

আপনি যদি তার POSTপরিবর্তে পদ্ধতিটি পাস করছিলেন কিনা তা পরীক্ষা করে দেখুন GET। যদি তাই হয় তবে আপনি উপরে পোস্ট করা হিসাবে একই ত্রুটি পাবেন।

$http({               
 method: 'GET',

অনুরোধ সত্তার মিডিয়া টাইপ 'পাঠ্য / প্লেইন' এই সংস্থানটির জন্য সমর্থিত নয়।


4
প্রশ্নটি বিশেষত কোনও পোষ্ট পোস্টের বিষয়ে, তিনি যে সার্ভারে ডেটা প্রেরণ করছেন সেটি সার্ভার থেকে ডেটা অনুরোধ করছে না।
যুদ্ধ

0

আমি আমার সমস্ত সেটিংস গ্রহণযোগ্য উত্তরে coveredেকে রেখেছিলাম। আমার যে সমস্যাটি ছিল তা হ'ল আমি সত্ত্বা ফ্রেমওয়ার্ক সত্তা "টাস্ক" টাইপের মতো আপডেট করার চেষ্টা করছিলাম:

public IHttpActionResult Post(Task task)

আমার পক্ষে যা কাজ করেছিল তা হ'ল আমার নিজস্ব সত্ত্বা "ডিটিওটাস্ক" তৈরি করা:

public IHttpActionResult Post(DTOTask task)

0

এটির জন্য Content-Type:application/jsonওয়েব এপিআই অনুরোধ শিরোনাম বিভাগে অন্তর্ভুক্ত করা দরকার যখন কোনও সামগ্রীর উল্লেখ না করা হয় তবে ডিফল্টরূপে এটি Content-Type:text/plainঅনুরোধটি পাস হয়।

পোস্টম্যান সরঞ্জামে এপিআই পরীক্ষার সেরা উপায়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.