दिलचस्प पोस्ट
जीआईटी लॉग शो फ़ाइल नामों जैसे कि svn log -v कैसे है रीसाइक्लर हेडर और पाद लेख देखें यदि कोई DOM एलिमेंट निकाल दिया जाता है, तो क्या इसके श्रोताओं को भी स्मृति से निकाल दिया जाता है? टेक्सटेरिया में वर्णों की गणना करें पूरे शब्द खोज और प्रतिस्थापित करें पर्ल में सिस्टम और बैकटीक्स और पाइप के बीच अंतर क्या है? एंड्रॉइड कैमरा इन्टेंट सेविंग इमेज लैंडस्केप जब ले लिया पोर्ट्रेट डिकोडुरिकमोनेंट और डिकोडयूआरआई के बीच अंतर क्या है? पायथन – एक पाश के अंदर के पिछले और अगले मान थ्रेड का उपयोग करके एंड्रॉइड UI अपडेट करना Android में ResultReceiver का उपयोग करना प्लेटफार्म जावा में स्वतंत्र पथ पंक्तियों की गणना करने के लिए Android में SQLite क्वेरी फ़ंक्शन रिटर्निंग खुद Google मानचित्र API V3 कस्टम नियंत्रण स्थिति

सर्वर पर JSON पोस्ट कैसे करें?

यह कोड मैं उपयोग कर रहा हूं:

// create a request HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url); request.KeepAlive = false; request.ProtocolVersion = HttpVersion.Version10; request.Method = "POST"; // turn our request string into a byte stream byte[] postBytes = Encoding.UTF8.GetBytes(json); // this is important - make sure you specify type this way request.ContentType = "application/json; charset=UTF-8"; request.Accept = "application/json"; request.ContentLength = postBytes.Length; request.CookieContainer = Cookies; request.UserAgent = currentUserAgent; Stream requestStream = request.GetRequestStream(); // now send it requestStream.Write(postBytes, 0, postBytes.Length); requestStream.Close(); // grab te response and print it out to the console along with the status code HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string result; using (StreamReader rdr = new StreamReader(response.GetResponseStream())) { result = rdr.ReadToEnd(); } return result; 

जब मैं इसे चला रहा हूँ, मुझे हमेशा 500 आंतरिक सर्वर त्रुटि मिलती है

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

Solutions Collecting From Web of "सर्वर पर JSON पोस्ट कैसे करें?"

जिस तरह से मैं यह करता हूं और काम कर रहा हूं:

 var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://url"); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { string json = "{\"user\":\"test\"," + "\"password\":\"bla\"}"; streamWriter.Write(json); streamWriter.Flush(); streamWriter.Close(); } var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var result = streamReader.ReadToEnd(); } 

मैंने इस कार्य को सरल तरीके से करने के लिए एक पुस्तकालय लिखा था, यहां यह है: https://github.com/ademargomes/JsonRequest

आशा करता हूँ की ये काम करेगा।

एडमेर के समाधान को जेएसएएन को ऑब्जेक्ट के अप्रत्यक्ष रूपांतरण प्रदान करने के लिए JavaScriptSerializer की Serialize विधि को Serialize करके सुधार किया जा सकता है।

इसके अतिरिक्त, Flush और Close स्पष्ट रूप से कॉल करने के लिए using कथन की डिफ़ॉल्ट कार्यक्षमता using लाभ उठाना संभव है।

 var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://url"); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { string json = new JavaScriptSerializer().Serialize(new { user = "Foo", password = "Baz" }); streamWriter.Write(json); } var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var result = streamReader.ReadToEnd(); } 

इसके अलावा शॉन की पोस्ट के लिए, प्रयोग करने वाले बयानों के घोंसले के लिए आवश्यक नहीं है। धारावाहिक using इसे ब्लॉक के अंत में प्लावित और बंद कर दिया जाएगा ताकि Flush() और Close() तरीकों को स्पष्ट रूप से कॉल करने की कोई ज़रूरत नहीं है:

 var request = (HttpWebRequest)WebRequest.Create("http://url"); request.ContentType = "application/json"; request.Method = "POST"; using (var streamWriter = new StreamWriter(request.GetRequestStream())) { string json = new JavaScriptSerializer().Serialize(new { user = "Foo", password = "Baz" }); streamWriter.Write(json); } var response = (HttpWebResponse)request.GetResponse(); using (var streamReader = new StreamReader(response.GetResponseStream())) { var result = streamReader.ReadToEnd(); } 

आप उपयोग कर रहे हैं सामग्री प्रकार का ख्याल रखना:

 application/json 

स्रोत:

RFC4627

अन्य पोस्ट

यदि आपको कॉल करने की आवश्यकता है तो एसिंक्रोनस तब उपयोग करें

 var request = HttpWebRequest.Create("http://www.maplegraphservices.com/tokkri/webservices/updateProfile.php?oldEmailID=" + App.currentUser.email) as HttpWebRequest; request.Method = "POST"; request.ContentType = "text/json"; request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request); private void GetRequestStreamCallback(IAsyncResult asynchronousResult) { HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState; // End the stream request operation Stream postStream = request.EndGetRequestStream(asynchronousResult); // Create the post data string postData = JsonConvert.SerializeObject(edit).ToString(); byte[] byteArray = Encoding.UTF8.GetBytes(postData); postStream.Write(byteArray, 0, byteArray.Length); postStream.Close(); //Start the web request request.BeginGetResponse(new AsyncCallback(GetResponceStreamCallback), request); } void GetResponceStreamCallback(IAsyncResult callbackResult) { HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState; HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult); using (StreamReader httpWebStreamReader = new StreamReader(response.GetResponseStream())) { string result = httpWebStreamReader.ReadToEnd(); stat.Text = result; } } 

इस विकल्प का उल्लेख नहीं है:

 using (var client = new HttpClient()) { client.BaseAddress = new Uri("http://localhost:9000/"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var foo = new User { user = "Foo", password = "Baz" } await client.PostAsJsonAsync("users/add", foo); } 

मैं हाल ही में एक JSON पोस्ट करने के लिए एक बहुत आसान तरीका के साथ आया था, मेरे ऐप में एक मॉडल से परिवर्तित करने के अतिरिक्त कदम के साथ ध्यान दें कि आपको अपने नियंत्रक के लिए मॉडल प्राप्त करने के लिए मॉडल [JsonObject] बनाना होगा और रूपांतरण करना चाहिए।

निवेदन:

  var model = new MyModel(); using (var client = new HttpClient()) { var uri = new Uri("XXXXXXXXX"); var json = new JavaScriptSerializer().Serialize(model); var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); var response = await Client.PutAsync(uri,stringContent).Result; ... ... } 

आदर्श:

 [JsonObject] [Serializable] public class MyModel { public Decimal Value { get; set; } public string Project { get; set; } public string FilePath { get; set; } public string FileName { get; set; } } 

सर्वर साइड:

 [HttpPut] public async Task<HttpResponseMessage> PutApi([FromBody]MyModel model) { ... ... } 

इस तरह से एचटीटीपी क्लाइंट का उपयोग करके इसे प्राप्त करने के कुछ अलग और स्वच्छ तरीके से:

 public async Task<HttpResponseMessage> PostResult(string url, ResultObject resultObject) { using (var client = new HttpClient()) { HttpResponseMessage response = new HttpResponseMessage(); try { response = await client.PostAsJsonAsync(url, resultObject); } catch (Exception ex) { throw ex } return response; } } 

var data = Encoding.ASCII.GetBytes(json);

byte[] postBytes = Encoding.UTF8.GetBytes(json);

यूएफटी 8 के बजाय एएससीआईआई का उपयोग करें