2008-09-18 12 views
34

मैं सी # में एक छोटा सा टूल लिख रहा हूं जिसे POST और JSON स्वरूपण का उपयोग करके किसी वेबसाइट से डेटा भेजने/प्राप्त करने की आवश्यकता होगी। मैंने सी # (या वास्तव में कोई भी भाषा) में पहले ऐसा कुछ नहीं किया है, इसलिए मैं शुरू करने के लिए कुछ उपयोगी जानकारी ढूंढने के लिए संघर्ष कर रहा हूं।वेबसाइटों के साथ बातचीत के लिए WebRequest सही सी # उपकरण है?

मुझे सी # में वेबरक्वेट क्लास (विशेष रूप से here से) पर कुछ जानकारी मिली है, लेकिन इससे पहले कि मैं इसमें डाइविंग शुरू कर दूं, मुझे आश्चर्य हुआ कि यह नौकरी के लिए सही उपकरण था या नहीं।

मुझे डेटा को जेसन प्रारूप में परिवर्तित करने के लिए बहुत सारे टूल मिल गए हैं लेकिन अधिक नहीं, इसलिए यदि कोई मृत अंत समाप्त होता है तो कोई भी जानकारी वास्तव में उपयोगी होगी।

उत्तर

25

WebRequest और अधिक विशेष रूप से HttpWebRequest क्लास जो आप प्राप्त करना चाहते हैं उसके लिए एक अच्छा प्रारंभिक बिंदु है। अनुरोध बनाने के लिए आप WebRequest का उपयोग करेंगे। निर्मित अनुरोध को वास्तव में इसका उपयोग करने के लिए HttpWebRequest को बनाएं।तो आप अपनी पोस्ट डेटा बना सकते हैं और तरह धारा में भेज दिया जाएगा:

HttpWebRequest req = (HttpWebRequest) 
WebRequest.Create("http://mysite.com/index.php"); 
req.Method = "POST"; 
req.ContentType = "application/x-www-form-urlencoded"; 
string postData = "var=value1&var2=value2"; 
req.ContentLength = postData.Length; 

StreamWriter stOut = new 
StreamWriter(req.GetRequestStream(), 
System.Text.Encoding.ASCII); 
stOut.Write(postData); 
stOut.Close(); 

इसी तरह आप GetResponse विधि है जो आप परिणामी प्रतिक्रिया स्ट्रीम पढ़ सकते हैं और जो कुछ भी आप की जरूरत करने की अनुमति देगा का उपयोग करके वापस प्रतिक्रिया पढ़ सकते हैं करने के लिए। आपको कम से वर्ग बारे में अधिक जानकारी पा सकते हैं: http://json.codeplex.com/

मैं वर्तमान में यह उपयोग कर रहा हूँ:

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx

+1

इसके बाद एक गायब अर्धविराम है: स्ट्रिंग postData = "var = value1 और var2 = value2" –

0

मैंने वेबसाइटों के साथ बातचीत के लिए WebRequest का उपयोग किया है। यह सही 'टूल'

मैं आपके प्रश्न के JSON पहलू पर टिप्पणी नहीं कर सकता।

-1

3.5 में एक अंतर्निहित jsonserializer है। वेबरेक्वेस्ट आपकी तलाश करने वाली सही कक्षा है।

कुछ उदाहरण:

+0

लाइन ब्रेक डालने के लिए प्रत्येक लिंक के बाद दो रिक्त स्थान। –

18

WebClient कभी कभी WebRequest से उपयोग करने के लिए आसान है। आप इसे देखना चाह सकते हैं।

JSON deserialization के लिए आप JavaScriptSerializer कक्षा को देखना चाहते हैं।

WebClient उदाहरण:

using (WebClient client = new WebClient()) 
{ 
    //manipulate request headers (optional) 
    client.Headers.Add (HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); 

    //execute request and read response as string to console 
    using (StreamReader reader = new StreamReader(client.OpenRead(targetUri))) 
    { 
     string s = reader.ReadToEnd(); 
     Console.WriteLine (s); 
    } 
} 

में चिह्नित किए गए मामले में किसी को विकि कोड

1

अद्यतन करने के लिए यह एक वेब साइट के लिए डेटा पोस्टिंग की बात आती है चाहता है के रूप में, System.Net.HttpWebRequest (HTTP विशेष के कार्यान्वयन WebRequest) एक पूरी तरह से सभ्य समाधान है। यह एसएसएल, एसिंक अनुरोध और अन्य उपहारों का एक समूह का समर्थन करता है, और एमएसडीएन पर अच्छी तरह से प्रलेखित है।

पेलोड कुछ भी हो सकता है: जेएसओएन प्रारूप में डेटा या जो कुछ भी - जब तक आप सामग्री टाइप टाइप को सर्वर की अपेक्षा करते हैं और समझते हैं (संभवतः एप्लिकेशन/जेसन, टेक्स्ट/जेसन या टेक्स्ट/एक्स-जेसन) , सब ठीक होगा।

सिस्टम सेवा से HttpWebRequest का उपयोग करते समय एक संभावित समस्या: चूंकि यह आईई प्रॉक्सी और क्रेडेंशियल जानकारी का उपयोग करता है, तो LOCALSYSTEM उपयोगकर्ता के रूप में चलते समय डिफ़ॉल्ट व्यवहार थोड़ा अजीब हो सकता है (या मूल रूप से कोई भी खाता जो इंटरैक्टिव पर लॉग ऑन नहीं करता है नियमित रूप से)। प्रॉक्सी और प्रमाणीकरण गुणों को Nothing पर सेट करना (या, जैसा कि आप सी # लोग इसे कॉल करना पसंद करते हैं, null, मुझे लगता है) इससे बच जाना चाहिए।

0

उदाहरण वस्तु से json स्वरूपित स्ट्रिंग और उपाध्यक्ष प्रतिकूल में कन्वर्ट करने के लिए, बाहर Json.NET कोशिश एक परियोजना के लिए और सीरियलाइजिंग और कस्टम टाइप कन्वर्टर्स के संदर्भ में सीखना और काम करना आसान है और कुछ लचीलापन प्रदान करता है। यह जेसन इनपुट पूछताछ के लिए LINQ वाक्यविन्यास का भी समर्थन करता है।

0

वर्तमान में उच्चतम रेटेड उत्तर सहायक है, लेकिन यह JSON को भेज या प्राप्त नहीं करता है। यहाँ

How to post json object in web service

और StackOverflow सवाल है कि मुझे सबसे ज्यादा इस समस्या को हल करने में मदद की है:

यहाँ एक उदाहरण दोनों भेजने और प्राप्त करने के लिए JSON का उपयोग करता है है

Problems sending and receiving JSON between ASP.net web service and ASP.Net web client

और यहां एक और संबंधित प्रश्न है:

json call with C#

संबंधित मुद्दे