मेरी लक्षित परियोजनाएं विंडोज 8, विनरेट और विंडोज फोन 8 हैं। मैं स्रोतों को साझा करने के लिए समाधान के लिए पोर्टेबल क्लास लाइब्रेरी का उपयोग कर रहा हूं। मुझे किसी अन्य एमवीसी वेब एपीआई प्रोजेक्ट में बनाई गई कुछ आरईएसटी सेवाओं को कॉल करने की आवश्यकता है लेकिन HttpClient
कक्षा पीसीएल में उपलब्ध नहीं है। इसे हल करने के लिए एक अच्छा तरीका कौन सा होगा? मैं एक सेवा इंटरफ़ेस में सोच रहा था और फिर HttpClient
, WebClient
या प्रत्येक मामले में उचित कक्षा का उपयोग करके प्रत्येक प्लेटफॉर्म के लिए एक प्रोजेक्ट बनाने के लिए। यह दृष्टिकोण काम कर सकता था लेकिन मैं सोच रहा था कि क्या अन्य तरीके हैं।पोर्टेबल क्लास लाइब्रेरी से आरईएसटी सेवाओं को कैसे कॉल करें?
उत्तर
एचटीपी क्लाइंट माइक्रोसॉफ्ट के दृश्य से पोर्टेबल नहीं है। एकमात्र अन्य तरीका अलग-अलग पुस्तकालयों को बनाना है जो प्रत्येक प्रोजेक्ट लागू करेंगे, और जैसा आपने वर्णन किया है वैसा ही करें। इस तरह, आप उन सभी प्लेटफार्मों में समानता प्राप्त कर सकते हैं जिन्हें आप लक्षित करना चाहते हैं।
मैंने सोचा था कि प्लेटफ़ॉर्म पर आने पर समानता के कुछ स्तर थे ... यदि आपके पास अलग-अलग परियोजनाएं हैं, तो आप अपनी कोड फ़ाइलों को अन्य प्रोजेक्ट से लिंक कर सकते हैं ताकि आपको बनाए रखने की आवश्यकता न हो कई परियोजनाएं, या यहां तक कि Project Linker का उपयोग करें (हालांकि मुझे नहीं पता कि 2012 संस्करण मौजूद है या नहीं)।
सिडेनोट: प्रोजेक्ट लिंकर फर बनाम 2012 है: http: // visualstudiogallery .msdn.microsoft.com/273dbf44-55a1-4ac6-a1f3-0b9741587b9a –
पोर्टेबल बाकी हाल ही में GitHub पर उपलब्ध हो गया है और वेब अनुरोध यह देखते हुए कि WebClient अनुपलब्ध है बनाने में मदद मिलनी चाहिए:
https://github.com/advancedrei/PortableRest#readme
PortableRest अन्य पोर्टेबल में REST API ग्राहकों को लागू करने के लिए एक पोर्टेबल कक्षा लाइब्रेरी है कक्षा पुस्तकालयों। यह किसी भी प्लेटफ़ॉर्म पर प्रतीक्षा करने योग्य निष्पादन के लिए तेज़, अनुकूलन क्रमिकरण के साथ-साथ Microsoft.Bcl.Async लाइब्रेरी के लिए JSON.NET का लाभ उठाता है। यह को रीस्टशर्प के साथ काफी हद तक ड्रॉप-इन होने के लिए डिज़ाइन किया गया है, हालांकि आपको कुछ बदलाव करने और पुन: संकलित करने की आवश्यकता होगी।
इस प्रारंभिक रिलीज में सरल JSON अनुरोधों के लिए सीमित समर्थन है। अधिक विकल्प (एक्सएमएल और उम्मीद है कि डेटाकंट्रैक्ट समर्थन सहित) बाद में रिलीज़ में उपलब्ध होंगे।
माइक्रोसॉफ्ट के पास rewritten the HttpClient
library to be portable (PCL) है और यह here on NuGet है।
समय के लिए, यह केवल प्री-रिलीज के रूप में उपलब्ध है, इसलिए यदि आप NuGet GUI पैकेज मैनेजर का उपयोग कर रहे हैं तो सुनिश्चित करें कि आप "प्रीरलीज़ शामिल करें" पर सेट करें।
कमांड लाइन से:
Install-Package Microsoft.Net.Http
काफी देर से, लेकिन यहाँ एक सरल कोड मैं करना पड़ा है, पीएलसी (भी काम कर सकते हैं) XBox 360 के अलावा सब कुछ के लिए लक्षित है। मैं इस लक्ष्य सूची के लिए HttpClient का उपयोग नहीं कर सका।
public class WebDownload
{
public class WebDownloadResult
{
public HttpStatusCode StatusCode { get; set; }
public int StatusCodeNumber { get; set; }
public bool ErrorOccured { get; set; }
public string ResultString { get; set; }
}
public static void Download(string url, Action<WebDownloadResult> resultAction)
{
WebDownloadResult response = new WebDownloadResult();
try
{
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
IAsyncResult result = (IAsyncResult)myHttpWebRequest.BeginGetResponse(new AsyncCallback(delegate(IAsyncResult tempResult)
{
HttpWebResponse webResponse = (HttpWebResponse)myHttpWebRequest.EndGetResponse(tempResult);
Stream responseStream = webResponse.GetResponseStream();
using (StreamReader reader = new StreamReader(responseStream, Encoding.UTF8))
{
response.ResultString = reader.ReadToEnd();
response.StatusCode = webResponse.StatusCode;
response.StatusCodeNumber = (int)webResponse.StatusCode;
if (resultAction != null) resultAction(response);
}
}), null);
}
catch
{
response.ErrorOccured = true;
if (resultAction != null) resultAction(response);
}
}
}
धन्यवाद दोस्त, यही एकमात्र चीज है जिसे मैं अपने पीसीएल प्रोजेक्ट में काम कर सकता हूं। इसके ऊपर एक आरईएसटी क्लाइंट बनाने के बारे में सोच रहा है ..... – skhro87
यह कमाल है! मैं आम तौर पर सी # और पीसीएल के साथ बहुत अनुभवी नहीं हूं, तो क्या वहां कोई है जो मुझे बता सकता है कि मुझे "परिणाम एक्शन" रिटर्न प्रकार को कैसे संभालना चाहिए?मुझे प्राप्त प्रतिक्रिया को पार्स करने के लिए "डाउनलोड" विधि के बाहर "परिणाम स्ट्रिंग" तक पहुंचने की आवश्यकता है। अग्रिम धन्यवाद। – Demitrian
- 1. पोर्टेबल क्लास लाइब्रेरी
- 2. पोर्टेबल क्लास लाइब्रेरी
- 3. पोर्टेबल क्लास लाइब्रेरी में थ्रेड कैसे बनाएं?
- 4. पोर्टेबल क्लास लाइब्रेरी से यूआई थ्रेड अपडेट करें
- 5. .NET पोर्टेबल क्लास लाइब्रेरी और यूडीपी समर्थन
- 6. जीडब्ल्यूटी से रीस्टफुल सेवाओं को कैसे कॉल करें?
- 7. पोर्टेबल क्लास लाइब्रेरी मेथडबेस के बराबर। GetCurrentMethod
- 8. पोर्टेबल क्लास लाइब्रेरी मोनो टच/मोनोड्रॉइड
- 9. पोर्टेबल क्लास लाइब्रेरी और .NET ConcurrentDictionary
- 10. पोर्टेबल क्लास लाइब्रेरी (पीसीएल) Contrib - क्रिप्टोग्राफी
- 11. Google क्रोम से आरईएसटी कॉल कैसे करें
- 12. आरईएसटी सेवाओं में सत्र
- 13. अलग क्लास लाइब्रेरी से web.config एक्सेस करें?
- 14. आरईएसटी कॉल
- 15. क्या Async CTP को पोर्टेबल लाइब्रेरी
- 16. आरईएसटी कॉल क्या है और आरईएसटी कॉल कैसे भेजना है?
- 17. साझा लाइब्रेरी से फ़ंक्शन कैसे कॉल करें?
- 18. पोर्टेबल वीएफएस लाइब्रेरी सी ++
- 19. क्लास लाइब्रेरी से HtmlEncode
- 20. पोर्टेबल क्लास लाइब्रेरी के लिए कोई लॉगिंग ढांचा?
- 21. पोर्टेबल क्लास लाइब्रेरी और ईएफ कोड-प्रथम के साथ कैसे काम करें?
- 22. डब्ल्यूसीएफ आरईएसटी सेवाओं के भीतर सीओआरएस समर्थन
- 23. सिस्टम कहां है पोर्टेबल क्लास पुस्तकालयों में?
- 24. मैं पोर्टेबल क्लास लाइब्रेरी पर निर्भर पुस्तकालय पर secannotate.exe को सफलतापूर्वक कैसे चला सकता हूं?
- 25. क्लास लाइब्रेरी
- 26. पोर्टेबल क्लास लाइब्रेरीज़ के लिए आईओसी कंटेनर
- 27. Thread.Sleep() एक पोर्टेबल कक्षा लाइब्रेरी
- 28. आरईएसटी सेवाओं पर प्रमाणीकरण टोकन का बिंदु
- 29. डब्ल्यूसीएफ आरईएसटी सेवाओं के लिए JSON.NET Serializer
- 30. क्लास लाइब्रेरी
संभावित डुप्लिकेट: http://stackoverflow.com/questions/13547479/are-there-any-rest-libraries-out-there-that-work-with-portable-class-libraries –
http://blogs.msdn.com/b/dotnet/archive/2013/05/22/portable-httpclient-is-now-available-as-rc.aspx – SLaks