दिलचस्प पोस्ट
PermGen अंतरिक्ष टॉमकैट में त्रुटि मौजूदा प्रकार को टाइप वैरिएबल के साथ संदर्भित करने का कोई तरीका है? मैं स्ट्रिंग में XML से org.w3c.dom.Document को कैसे लोड करूँ? समवर्ती async I / O कार्रवाई की मात्रा को कैसे सीमित करें? ExecuteReader को एक खुला और उपलब्ध कनेक्शन की आवश्यकता है। कनेक्शन का वर्तमान स्थिति कनेक्ट हो रहा है ग्रहण शुरू नहीं होगा और मैंने कुछ भी नहीं बदला है एक onclick घटना को एक तालिका पंक्ति में जोड़ना संकलक द्वारा उपयोग किए गए C ++ मानक के संस्करण का निर्धारण कैसे करें? बिगडीकैम बराबर () बनाम तुलना करें () किसी प्रोजेक्ट से कोकोपॉड को कैसे निकालना है? गाऊसी किसी भी अंतर्निहित गाऊसी कार्यों का उपयोग किए बिना एक छवि को कैसे धुंधला कर सकता है? पायथन में लगभग समानता के लिए फ्लोट की तुलना करने का सबसे अच्छा तरीका क्या है? ग्रहण त्रुटि, हाल ही के अपडेट के बाद आर.जेवा फाइल गायब है सी # या vb.net का उपयोग करके अंतिम जेनरेट किए गए HTML स्रोत प्राप्त करें एक सी # अनाम वर्ग एक अंतरफलक लागू कर सकते हैं?

मैं कैसे सी # का उपयोग कर एक REST एपीआई के लिए कॉल कर सकता हूँ?

यह अब तक का कोड है:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System; using System.Net.Http; using System.Web; using System.Net; using System.IO; namespace ConsoleProgram { public class Class1 { private const string URL = "https://sub.domain.com/objects.json?api_key=123"; private const string DATA = @"{""object"":{""name"":""Name""}}"; static void Main(string[] args) { Class1.CreateObject(); } private static void CreateObject() { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); request.Method = "POST"; request.ContentType = "application/json"; request.ContentLength = DATA.Length; StreamWriter requestWriter = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII); requestWriter.Write(DATA); requestWriter.Close(); try { WebResponse webResponse = request.GetResponse(); Stream webStream = webResponse.GetResponseStream(); StreamReader responseReader = new StreamReader(webStream); string response = responseReader.ReadToEnd(); Console.Out.WriteLine(response); responseReader.Close(); } catch (Exception e) { Console.Out.WriteLine("-----------------"); Console.Out.WriteLine(e.Message); } } } } 

समस्या यह है कि मुझे लगता है कि अपवाद ब्लॉक को चालू किया जा रहा है (क्योंकि जब मैं कोशिश-पकड़ को निकालता हूं, मुझे एक सर्वर त्रुटि (500) संदेश मिलता है। लेकिन मुझे कंसोल नहीं दिखाई देती।

मेरा कंसोल:

 The thread 'vshost.NotifyLoad' (0x1a20) has exited with code 0 (0x0). The thread '<No Name>' (0x1988) has exited with code 0 (0x0). The thread 'vshost.LoadReference' (0x1710) has exited with code 0 (0x0). 'ConsoleApplication1.vshost.exe' (Managed (v4.0.30319)): Loaded 'c:\users\l. preston sego iii\documents\visual studio 11\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe', Symbols loaded. 'ConsoleApplication1.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. A first chance exception of type 'System.Net.WebException' occurred in System.dll The thread 'vshost.RunParkingWindow' (0x184c) has exited with code 0 (0x0). The thread '<No Name>' (0x1810) has exited with code 0 (0x0). The program '[2780] ConsoleApplication1.vshost.exe: Program Trace' has exited with code 0 (0x0). The program '[2780] ConsoleApplication1.vshost.exe: Managed (v4.0.30319)' has exited with code 0 (0x0). 

मैं Visual Studio 2011 बीटा, और .NET 4.5 बीटा का उपयोग कर रहा हूँ।

वेब के समाधान से एकत्रित समाधान "मैं कैसे सी # का उपयोग कर एक REST एपीआई के लिए कॉल कर सकता हूँ?"

एएसपी.नेट वेब एपीआई ने पहले उल्लेख किया गया WCF वेब एपीआई को बदल दिया है

मैंने सोचा कि मैं एक अद्यतन उत्तर पोस्ट करेंगे क्योंकि इनमें से अधिकतर प्रतिक्रियाएं 2012 के प्रारंभ से हैं, और यह थ्रेड "कॉल सशक्त सेवा C #" के लिए Google खोज करते समय शीर्ष परिणामों में से एक है।

माइक्रोसॉफ्ट से वर्तमान मार्गदर्शन एक निश्चिंत सेवा का उपभोग करने के लिए Microsoft ASP.NET वेब एपीआई ग्राहक पुस्तकालयों का उपयोग करना है। यह एक NuGet पैकेज, माइक्रोसॉफ्ट के रूप में उपलब्ध है। एस्पनेट। वेब एपीआई। क्लाइंट

एएसपी.नेट वेब एपीआई क्लाइंट लाइब्रेरी का उपयोग करते हुए लागू किया गया है, यह देखें:

 using System; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; namespace ConsoleProgram { public class DataObject { public string Name { get; set; } } public class Class1 { private const string URL = "https://sub.domain.com/objects.json"; private string urlParameters = "?api_key=123"; static void Main(string[] args) { HttpClient client = new HttpClient(); client.BaseAddress = new Uri(URL); // Add an Accept header for JSON format. client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); // List data response. HttpResponseMessage response = client.GetAsync(urlParameters).Result; // Blocking call! if (response.IsSuccessStatusCode) { // Parse the response body. Blocking! var dataObjects = response.Content.ReadAsAsync<IEnumerable<DataObject>>().Result; foreach (var d in dataObjects) { Console.WriteLine("{0}", d.Name); } } else { Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase); } } } } 

अधिक उदाहरणों के लिए, अन्य उदाहरणों सहित, यहां जाएं : http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from-a-net-client

यह ब्लॉग पोस्ट भी उपयोगी हो सकता है: http://johnnycode.com/2012/02/23/consuming-your-own-asp-net-web-api-rest-service/

मेरा सुझाव RestSharp का उपयोग करने के लिए होगा आप REST सेवाओं को कॉल कर सकते हैं और उन्हें बहुत कम बॉयलरप्लेट कोड के साथ POCO ऑब्जेक्ट्स में डाली जा सकते हैं, वास्तव में प्रतिक्रिया के द्वारा पार्स करना होगा। यह आपकी विशेष त्रुटि को हल नहीं करेगा, लेकिन REST सेवाओं को कॉल करने के अपने संपूर्ण प्रश्न का उत्तर देता है। इसका उपयोग करने के लिए अपना कोड बदलने के बाद इसे उपयोग में आसानी से भुगतान करना चाहिए और आगे बढ़ने के लिए मजबूती होनी चाहिए यद्यपि यह सिर्फ 2 सेंट है

असंबंधित, मुझे यकीन है, लेकिन उचित निपटान सुनिश्चित करने के लिए ब्लॉकों का using अपनी IDisposable वस्तुओं को लपेटें:

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System; using System.Web; using System.Net; using System.IO; namespace ConsoleProgram { public class Class1 { private const string URL = "https://sub.domain.com/objects.json?api_key=123"; private const string DATA = @"{""object"":{""name"":""Name""}}"; static void Main(string[] args) { Class1.CreateObject(); } private static void CreateObject() { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); request.Method = "POST"; request.ContentType = "application/json"; request.ContentLength = DATA.Length; using (Stream webStream = request.GetRequestStream()) using (StreamWriter requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII)) { requestWriter.Write(DATA); } try { WebResponse webResponse = request.GetResponse(); using (Stream webStream = webResponse.GetResponseStream()) { if (webStream != null) { using (StreamReader responseReader = new StreamReader(webStream)) { string response = responseReader.ReadToEnd(); Console.Out.WriteLine(response); } } } } catch (Exception e) { Console.Out.WriteLine("-----------------"); Console.Out.WriteLine(e.Message); } } } } 

.NET 4.5 का उपयोग करते समय एक REST API कॉल करने के लिए अपडेट करें।

मैं DalSoft सुझाव देंगे। RestClient (चेतावनी मैं इसे बनाया) इसका कारण यह गतिशील टाइपिंग का उपयोग करता है, आप सभी चीजों को एक धाराप्रवाह कॉल में रख सकते हैं, जिसमें सीरियलाइजेशन / डी-सीरियलाइजेशन शामिल है। नीचे एक काम कर रहा है उदाहरण:

 dynamic client = new RestClient("http://jsonplaceholder.typicode.com"); var post = new Post { title = "foo", body = "bar", userId = 10 }; var result = await client.Posts(1).Put(post); 

कृपया अपने REST एपीआई अनुरोध के लिए नीचे कोड का उपयोग करें

 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Text; using System.Json; namespace ConsoleApplication2 { class Program { private const string URL = "https://XXXX/rest/api/2/component"; private const string DATA = @"{ ""name"": ""Component 2"", ""description"": ""This is a JIRA component"", ""leadUserName"": ""xx"", ""assigneeType"": ""PROJECT_LEAD"", ""isAssigneeTypeValid"": false, ""project"": ""TP""}"; static void Main(string[] args) { AddComponent(); } private static void AddComponent() { System.Net.Http.HttpClient client = new System.Net.Http.HttpClient(); client.BaseAddress = new System.Uri(URL); byte[] cred = UTF8Encoding.UTF8.GetBytes("username:password"); client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(cred)); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); System.Net.Http.HttpContent content = new StringContent(DATA, UTF8Encoding.UTF8, "application/json"); HttpResponseMessage messge = client.PostAsync(URL, content).Result; string description = string.Empty; if (messge.IsSuccessStatusCode) { string result = messge.Content.ReadAsStringAsync().Result; description = result; } } } } 
  var TakingRequset = WebRequest.Create("http://xxx.acv.com/MethodName/Get"); TakingRequset.Method = "POST"; TakingRequset.ContentType = "text/xml;charset=utf-8"; TakingRequset.PreAuthenticate = true; //---Serving Request path query var PAQ = TakingRequset.RequestUri.PathAndQuery; //---creating your xml as per the host reqirement string xmlroot=@"<root><childnodes>passing parameters</childnodes></root>"; string xmlroot2=@"<root><childnodes>passing parameters</childnodes></root>"; //---Adding Headers as requested by host xmlroot2 = (xmlroot2 + "XXX---"); //---Adding Headers Value as requested by host // var RequestheaderVales = Method(xmlroot2); WebProxy proxy = new WebProxy("XXXXX-----llll", 8080); proxy.Credentials = new NetworkCredential("XXX---uuuu", "XXX----", "XXXX----"); System.Net.WebRequest.DefaultWebProxy = proxy; // Adding The Request into Headers TakingRequset.Headers.Add("xxx", "Any Request Variable "); TakingRequset.Headers.Add("xxx", "Any Request Variable"); byte[] byteData = Encoding.UTF8.GetBytes(xmlroot); TakingRequset.ContentLength = byteData.Length; using (Stream postStream = TakingRequset.GetRequestStream()) { postStream.Write(byteData, 0, byteData.Length); postStream.Close(); } StreamReader stredr = new StreamReader(TakingRequset.GetResponse().GetResponseStream()); string response = stredr.ReadToEnd(); 

चूंकि आप विजुअल स्टूडियो 11 बीटा का प्रयोग कर रहे हैं, आप नवीनतम और महानतम उपयोग करना चाहते हैं। नई वेब एपीआई में इसके लिए कक्षाएं हैं।

एचटीटीपी क्लाइंट देखें: http://wcf.codeplex.com/wikipage?title=WCF%20HTTP

एनएटी से सेवाओं को आराम करने के लिए कॉल करने के लिए रिफ़र्व देखें मैंने इसे उपयोग करना बहुत आसान पाया है: https://github.com/paulcbetts/refit

Refit: .NET कोर, Xamarin और .NET के लिए स्वचालित प्रकार से सुरक्षित REST पुस्तकालय

Refit एक लाइब्रेरी है जो स्क्वायर के रेट्रोफिट लाइब्रेरी से बहुत अधिक प्रेरित है, और यह एक लाइव इंटरफ़ेस में आपके आराम API को बदलता है:

 public interface IGitHubApi { [Get("/users/{user}")] Task<User> GetUser(string user); } The RestService class generates an implementation of IGitHubApi that uses HttpClient to make its calls: var gitHubApi = RestService.For<IGitHubApi>("https://api.github.com"); var octocat = await gitHubApi.GetUser("octocat"); 

यह एक उदाहरण कोड है जो सुनिश्चित करने के लिए काम करता है। यह एक दिन मुझे आराम सेवा से वस्तु का एक सेट पढ़ने के लिए ले गया:

RootObject ओमेज़ प्रकार का एक प्रकार है जो बाकी सेवा से पढ़ रहा है I

 string url = @"http://restcountries.eu/rest/v1"; DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(IEnumerable<RootObject>)); WebClient syncClient = new WebClient(); string content = syncClient.DownloadString(url); using (MemoryStream memo = new MemoryStream(Encoding.Unicode.GetBytes(content))) { IEnumerable<RootObject> countries = (IEnumerable<RootObject>)serializer.ReadObject(memo); } Console.Read(); 

आप सरल वेब WebClient क्लास का उपयोग करने का प्रयास कर सकते हैं:

http://www.dotnetperls.com/webclient

प्राप्त:

 // GET JSON Response public WeatherResponseModel GET(string url) { WeatherResponseModel model = new WeatherResponseModel(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); try { WebResponse response = request.GetResponse(); using(Stream responseStream = response.GetResponseStream()) { StreamReader reader = new StreamReader(responseStream, Encoding.UTF8); model = JsonConvert.DeserializeObject < WeatherResponseModel > (reader.ReadToEnd()); } } catch (WebException ex) { WebResponse errorResponse = ex.Response; using(Stream responseStream = errorResponse.GetResponseStream()) { StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8")); String errorText = reader.ReadToEnd(); // log errorText } throw; } return model; } 

पद:

 // POST a JSON string void POST(string url, string jsonContent) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); Byte[]byteArray = encoding.GetBytes(jsonContent); request.ContentLength = byteArray.Length; request.ContentType = @ "application/json"; using(Stream dataStream = request.GetRequestStream()) { dataStream.Write(byteArray, 0, byteArray.Length); } long length = 0; try { using(HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { // got response length = response.ContentLength; } } catch (WebException ex) { WebResponse errorResponse = ex.Response; using(Stream responseStream = errorResponse.GetResponseStream()) { StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8")); String errorText = reader.ReadToEnd(); // log errorText } throw; } } 

नोट: JSON serialize और desirialze करने के लिए मैं Newtonsoft उपयोग किया। जेसन NuGet पैकेज