.NET

2009-12-03 8 views
9

से REST API का उपभोग करें मैं अपने .NET अनुप्रयोग से REST API का उपभोग करने का प्रयास कर रहा हूं। यह एपीआई सभी जावा में लिखे गए हैं। मुझे HTTP शीर्षलेखों के साथ प्रमाणीकरण प्रमाण-पत्र पास करने के लिए कहा जाता है। मैं HTTP प्रमाणीकरण के माध्यम से 'प्रमाणीकरण', 'प्राधिकरण' और 'स्वीकार करें' जैसे इन प्रमाणीकरण प्रमाण-पत्र कैसे पारित कर सकता हूं।.NET

मैं इस कार्य को पूरा करने के लिए .NET में कौन सी कक्षा का उपयोग कर सकता हूं। क्या कोई मुझे इस बारे में सहायता कर सकता है?

आपकी सभी मदद की सराहना की जाएगी।

अजीश।

उत्तर

13

अद्यतन

यह पुस्तकालय अब तक http://nuget.org/packages/Microsoft.Net.Http/2.1.10


प्रतिस्थापित किया गया है WCF REST Starter Kit Preview 2 में है कि Microsoft.Http क्लाइंट लाइब्रेरी का प्रयोग करें।

यहाँ कैसे आप इसका इस्तेमाल कर सकता है:

var client = new HttpClient(); 
    client.DefaultHeaders.Authorization = new Credential("ArbitraryAuthHeader"); 
    client.DefaultHeaders.Date = DateTime.Now; 
    client.DefaultHeaders.Accept.Add("application/xml"); 

    var response = client.Get("http://example.org"); 

    var xmlString = response.Content.ReadAsString(); 
+0

यहां तक ​​कि मैं दिनांक शीर्षलेख सेट/बदलने में सक्षम नहीं हूं। – Ajish

+0

क्यों नहीं? क्या आपको कोई त्रुटि मिलती है? –

+0

जब मैंने दिनांक शीर्षलेख सेट करने का प्रयास किया, तो मुझे एक अपवाद मिल रहा है कि 'वेब क्लाइंट अनुरोध के दौरान एक अपवाद हुआ।' और मैंने डेट हेडर के बिना कोशिश की, मुझे इस तरह की 401 अनधिकृत त्रुटि मिल रही है 'रिमोट सर्वर ने एक त्रुटि लौटा दी: (401) अनधिकृत। – Ajish

1

इस तरह से कई तरीके हैं कि आप ऐसा कर सकते हैं लेकिन WebRequest ऑब्जेक्ट्स का उपयोग करना सबसे तेज़ है यदि आपके पास केवल कुछ कॉल पूर्ण हैं।

This site, इस प्रक्रिया का एक शानदार अवलोकन है।

+0

मैं अनुरोध भेजने और क्रमशः प्रतिक्रिया प्राप्त करने के लिए एक ही HttpWebRequest और HttpWebResponse वर्ग उपयोग करने की कोशिश। लेकिन अभी समस्या यह है कि मैं HttpWebRequest के DATE शीर्षलेख को जोड़ने/सेट करने में सक्षम नहीं हूं। जब मैं DATE शीर्षलेख सेट करने का प्रयास करता हूं। मुझे कहने का अपवाद मिल रहा है यह हेडर उचित संपत्ति का उपयोग करके संशोधित किया जाना चाहिए। पैरामीटर नाम: नाम। मैंने इसके लिए एक समाधान को Google पर करने का प्रयास किया लेकिन कोई नहीं .. क्या मैं कुछ भी कर सकता हूं जो HttpWebRequest – Ajish

+0

में DATE शीर्षलेख सेट करने के लिए कर सकता है ऐसा लगता है कि यह काम नहीं करेगा। http://social.msdn.microsoft।कॉम/फ़ोरम/एन-यूएस/नेटफैक्सनेटॉम/थ्रेड/डीबीए 65027-3 एफबी 8-42ec-83e8-90bd77c42ca3/ मैं डैरल की टिप्पणी को देखूंगा। –

+0

मैं .NET httpRequest में दिनांक शीर्षलेख को कैसे बदल/सेट कर सकता हूं? जब मैं इसे बदलने की कोशिश करता हूं, तो मुझे एक त्रुटि मिल रही है। – Ajish

0

इसके कुछ भ्रामक नाम के बावजूद, ADO.NET Data Services (जो .NET 3.5 का हिस्सा है) में आरईएसटी-आधारित सेवाओं को उजागर करने और उपभोग करने के लिए एपीआई शामिल हैं। आपके मामले में आप उस हिस्से को सुरक्षित रूप से अनदेखा कर सकते हैं जो आपको सेवाओं का पर्दाफाश करने और ग्राहक भाग पर ध्यान केंद्रित करने की अनुमति देता है।

यह LINQ और अच्छाई के सभी प्रकार का समर्थन करता है, तो आप इस तरह अपने बाकी सेवा क्वेरी करने के लिए अनुमति देता है:

var selectedOrders = from o in context.Orders 
        where o.Freight > 30 
        orderby o.ShippedDate descending 
        select o; 

इसमें here के बारे में अधिक है। इसे आज़माएं - मैं अब तक इसके साथ बहुत खुश हूं।

+3

आप जो उदाहरण दे रहे हैं उसके साथ समस्या यह है कि आप केवल ADO.Net डेटा सेवा एंडपॉइंट्स के विरुद्ध linq क्वेरी कर सकते हैं। आप अन्य आरईएसटी एंडपॉइंट्स के खिलाफ ऐसा नहीं कर सकते हैं। ओपी अपने जावा एपीआई के खिलाफ ऐसा करने में सक्षम नहीं होगा। –

4

बस इस सूत्र के लिए मूल्य का एक सा जोड़ने के लिए (मैं भी एक RESTful सेवा का उपभोग और आसानी से क्रेडेंशियल प्रदान करने के लिए एक रास्ता तलाश कर रहे थे और इस में आए

A Developer's Guide to the WCF REST Starter Kit

वहाँ कैसे उपभोग करने के लिए पर एक बहुत जानकारीपूर्ण अनुभाग है: सूत्र ... मैं "तिथि" आवश्यकता नहीं था), एरोन Skonnard WCF बाकी स्टार्टर किट कहा जाता है का उपयोग करने पर एक उत्कृष्ट लेख लिखा है एक बहाली सेवा HttpClient का उपयोग कर। और यहाँ ट्विटर से बात करने के कोड का टुकड़ा है:

HttpClient http = new HttpClient("http://twitter.com/statuses/"); 
http.TransportSettings.Credentials = 
    new NetworkCredential("{username}", "{password}"); 
HttpResponseMessage resp = http.Get("friends_timeline.xml"); 
resp.EnsureStatusIsSuccessful(); 
ProcessStatuses(resp.Content.ReadAsStream()); 
संबंधित मुद्दे