Receive (415) An unsupported media type error

What I need to do is that I have to post JSON data to the specified URL Where my JSON looks like

{ "trip_title":"My Hotel Booking", "traveler_info":{ "first_name":"Edward", "middle_name":"", "last_name":"Cullen", "phone":{ "country_code":"1", "area_code":"425", "number":"6795089" }, "email":" asdv@gmail.com " }, "billing_info":{ "credit_card":{ "card_number":"47135821", "card_type":"Visa", "card_security_code":"123", "expiration_month":"09", "expiration_year":"2017" }, "first_name":"Edward", "last_name":"Cullen", "billing_address":{ "street1":"Expedia Inc", "street2":"108th Ave NE", "suite":"333", "city":"Bellevue", "state":"WA", "country":"USA", "zipcode":"98004" }, "phone":{ "country_code":"1", "area_code":"425", "number":"782" } }, "marketing_code":"" } 

And my function

 string message = "URL"; _body="JSON DATA"; HttpWebRequest request = HttpWebRequest.Create(message) as HttpWebRequest; if (!string.IsNullOrEmpty(_body)) { request.ContentType = "text/json"; request.Method = "POST"; using (var streamWriter = new StreamWriter(request.GetRequestStream())) { streamWriter.Write(_body); streamWriter.Flush(); streamWriter.Close(); } } using (HttpWebResponse webresponse = request.GetResponse() as HttpWebResponse) { using (StreamReader reader = new StreamReader(webresponse.GetResponseStream())) { string response = reader.ReadToEnd(); } } 

And when I send it; I get an error

"The remote server responded with an error: (415) Unsupported media type."

Does anyone have an idea about this; where am i wrong

+7
source share
7 answers

Try the following:

 request.ContentType = "application/json" 
+12
source

As others have said, the problem is with ContentType. Must be "application / json".

Here is an example with old WebRequest

 var parameters = Newtonsoft.Json.JsonConvert.SerializeObject(obj); var req = WebRequest.Create(uri); req.Method = "POST"; req.ContentType = "application/json"; byte[] bytes = Encoding.ASCII.GetBytes(parameters); req.ContentLength = bytes.Length; using (var os = req.GetRequestStream()) { os.Write(bytes, 0, bytes.Length); os.Close(); } var stream = req.GetResponse().GetResponseStream(); if (stream != null) using (stream) using (var sr = new StreamReader(stream)) { return sr.ReadToEnd().Trim(); } return "Response was null"; 
+1
source

I am not 100% sure, but I think you need to send the text as byteArray, try the following:

 req = (HttpWebRequest)HttpWebRequest.Create(uri); req.CookieContainer = cookieContainer; req.Method = "POST"; req.ContentType = "text/json"; byte[] byteArray2 = Encoding.ASCII.GetBytes(body); req.ContentLength = byteArray2.Length; Stream newStream = req.GetRequestStream(); newStream.Write(byteArray2, 0, byteArray2.Length); newStream.Close(); 
0
source

I renamed my project and updated all namespaces to correlate, after which I received this same message. I realized that I did not update the namespaces in web.config (name and contract):

 <system.serviceModel> <services> <service name="XYZAuthentication" behaviorConfiguration="ServiceBehaviour"> <endpoint address="" binding="webHttpBinding" contract="XYZIAuthentication" behaviorConfiguration="web" bindingConfiguration="defaultRestJsonp"></endpoint> </service> </...> </..> 

Hope this helps everyone who reads this.

0
source

this is a sample of i code created for a web api function that accepts json data

 string Serialized = JsonConvert.SerializeObject(jsonData); using (var client = new HttpClient()) { client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpContent content = new StringContent(Serialized, Encoding.Unicode, "application/json"); var response = await client.PostAsync("http://localhost:1234", content); } 
0
source

Serialize the data you want to transfer and encode it. Also, mention req.ContentType = "application / json";

"martin" is working.

 LoginInfo obj = new LoginInfo(); obj.username = uname; obj.password = pwd; var parameters = Newtonsoft.Json.JsonConvert.SerializeObject(obj); var req = WebRequest.Create(uri); req.Method = "POST"; req.ContentType = "application/json"; byte[] bytes = Encoding.ASCII.GetBytes(parameters); req.ContentLength = bytes.Length; using (var os = req.GetRequestStream()) { os.Write(bytes, 0, bytes.Length); os.Close(); } var stream = req.GetResponse().GetResponseStream(); if (stream != null) using (stream) using (var sr = new StreamReader(stream)) { return sr.ReadToEnd().Trim(); } 
0
source

For WebAPI -> If you're calling this POST method from fiddler , just add this line below in the header.

 Content-Type: application/json 
0
source

All Articles