2012-10-30 29 views
7

मुझे क्या करना है मैं दिए गए URL मेरे JSON की तरहहो रही है (415) असमर्थित मीडिया प्रकार त्रुटि

{ 
    "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":"[email protected]" 
    }, 
    "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":"" 
} 

और मेरे समारोह लग रहा है में JSON डेटा पोस्ट करने के लिए है कि है

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(); 
    } 
} 

और जब मैं इसे पोस्ट कर रहा हूं; मैं एक त्रुटि

"The remote server returned an error: (415) Unsupported Media Type."

किसी हो रही है इसके बारे में पता नहीं है; मैं गलत कहां कर रहा हूँ?

+0

क्या आपने कभी यह हल किया है? मैं एक बहुत ही समान मुद्दे से फंस गया हूं [मैंने यहां पोस्ट किया है] (http://stackoverflow.com/questions/14381385/system-net-webexception-when-sending-json-using-post-request-to-a- जिरा-एपीआई) – calebisstupid

उत्तर

12

इस प्रयास करें:

request.ContentType = "application/json" 
+0

कोशिश की लेकिन कोई भाग्य नहीं। उत्तर – user1785373

+0

के लिए धन्यवाद अगर यह काम नहीं करता है, तो इसका मतलब है कि सर्वर पक्ष जेसन की अपेक्षा नहीं कर रहा है, इसलिए समस्या सर्वर के पक्ष में नहीं है। –

+0

मेरे लिए यह काम करता है, ऐसा लगता है कि मुझे यह निर्दिष्ट करना था कि अनुरोध एक json – break7533

0

इम 100% यकीन नहीं लेकिन मैं आपको एक bytearray के रूप में पाठ भेजने के लिए लगता है, इस प्रयास करें:

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

कोशिश कर रहा था लेकिन कोई भाग्य नहीं। उत्तर के लिए धन्यवाद – user1785373

0

मैं अपने प्रोजेक्ट का नाम बदला और के सभी अद्यतन नामस्थानों को सहसंबंधित करने के बाद मुझे यह वही संदेश मिला। मुझे एहसास हुआ कि मैं web.config में नेमस्पेस (नाम और अनुबंध) अद्यतन नहीं किया था:

<system.serviceModel> 
    <services> 
    <service name="X.Y.Z.Authentication" behaviorConfiguration="ServiceBehaviour"> 
     <endpoint address="" binding="webHttpBinding" contract="X.Y.Z.IAuthentication" behaviorConfiguration="web" bindingConfiguration="defaultRestJsonp"></endpoint> 
    </service> 
    </...> 
</..> 

आशा इस किसी को भी इस पढ़ने में मदद करता है।

0

यह एक कोड मैं वेब एपीआई समारोह के लिए बनाया दूसरों मुद्दा ContentType के साथ है द्वारा जवाब के रूप में है कि json डेटा

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); 
} 
1

स्वीकार करता है की नमूना है। 'आवेदन/जेसन' होना चाहिए।

यहाँ वर्ष 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"; 
0

डेटा आप गुजरती हैं और यह सांकेतिक शब्दों में बदलना चाहता हूँ को क्रमानुसार के साथ एक नमूना है। इसके अलावा, req.ContentType = "एप्लिकेशन/जेसन" का उल्लेख करें;

"मार्टिन" कोड काम करता है।

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

वेबएपीआई >> आप calling this POST method from fiddler हैं, तो बस शीर्षक में रेखा से नीचे इस ऐड के लिए

Content-Type: application/json