WP7

2011-02-01 26 views
5

से डब्ल्यूसीएफ सेवा में पोस्ट डेटा मैं एक WP7 एप्लिकेशन पर काम कर रहा हूं। अगर कोई त्रुटि होती है, तो मैं त्रुटि को अपने सर्वर पर वापस लॉग करना चाहता हूं। इसे संभालने के लिए, मैंने एक डब्ल्यूसीएफ सेवा ऑपरेशन बनाया है। मैं चाहता हूं कि यह ऑपरेशन रीस्ट फुल हो ताकि मैं बाद में इसे आईफोन और एंड्रॉइड ऐप के साथ इस्तेमाल कर सकूं। क्योंकि मैं डेटाबेस में जानकारी लिख रहा हूं, मैंने सोचा कि पोस्ट विधि सबसे अच्छी होगी। इस कारण से, मैं WebInvoke का उपयोग कर रहा हूँ। ऐसा करने के लिए, मैं निम्नलिखित कोड का उपयोग कर रहा:WP7

[OperationContract] 
[WebInvoke(UriTemplate = "/LogError/{message}/{stackTrace}", ResponseFormat = WebMessageFormat.Json)] 
public void LogError(string message, string stackTrace) 
{ 
    // Write info to the database 
} 

मेरी WP7 एप्लिकेशन से, मैं एक WebClient के माध्यम से इस operaiton कॉल करना चाहते हैं। मेरा सवाल है, मैं यह कैसे कर सकता हूं? मुझे समझ में नहीं आता कि LogError ऑपरेशन को कैसे कॉल करें और वेब क्लाइंट के माध्यम से आवश्यक डेटा के साथ पास करें।

आपकी मदद के लिए धन्यवाद!

+0

एक चीज जो मैं जोड़ूंगा वह आपके उपयोगकर्ताओं को 3 जी कनेक्शन का उपयोग करने के बारे में सावधान रहें, इस तरह की एनालिटिक्स जानकारी पोस्ट करने के लिए। यदि संभव हो तो त्रुटि जानकारी को कैश करने का प्रयास करें और केवल तभी भेजें जब आपके पास वाईफाई या ईथरनेट कनेक्शन हो। आप नेटवर्कइंटरफेस.NetworkInterfaceType का उपयोग यह निर्धारित करने के लिए कर सकते हैं कि आपके पास किस प्रकार का कनेक्शन है (हालांकि सावधान रहें क्योंकि इस संपत्ति तक पहुंच अवरुद्ध कॉल है)। – 1adam12

उत्तर

1

पंक्तियों के साथ कुछ:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://serveraddress/LogError/{message}/{stackTrace}"); 

आप भेजना चाहते हैं तो बाद में अतिरिक्त जानकारी के लिए आप के साथ ऐसा कर सकते हैं:

request.Method = "POST"; 
request.BeginGetRequestStream(new AsyncCallback(ExecuteAction), request); 

और एक कॉलबैक है:

void ExecuteAction(IAsyncResult result) 
{ 
    HttpWebRequest request = (HttpWebRequest)result.AsyncState; 
    using (Stream s = request.EndGetRequestStream(result)) 
    { 
     s.Write(data, 0, data.Length); 
    } 
} 

अगर वहाँ सेवा से एक विशिष्ट स्ट्रिंग प्रतिक्रिया है, तो आप के रूप में अच्छी WebClient में डेटा शामिल और DownloadStringAsync का उपयोग प्रतिक्रिया डेटा प्राप्त करने के सकता है। हालांकि आप अपने खुद के सेवा इंटरफ़ेस सूट करने के लिए यह tweak करना चाह सकते हैं

1

शुरुआत करने वालों के लिए, मुझे एक ऐसी वेबसाइट मिली जो आपको WP7 से सेवा कॉल करने में मदद करने में मदद करनी चाहिए।

प्रयास करें this और मुझे पता है कि आप क्या सोचते

+0

लिंक प्रदान करने के लिए धन्यवाद। दुर्भाग्यवश वह वास्तव में नहीं था जिसे मैं ढूंढ रहा था। ऐसा लगता है कि वेब क्लाइंट के माध्यम से डब्ल्यूसीएफ सेवा में पोस्ट करने का एक आसान तरीका होना चाहिए। मुझे कुछ दिखाना होगा। हालांकि कोशिश करने के लिए धन्यवाद। – user208662

2

मैं सही ढंग से अपने सेवा विधि हो रही है, तो चलो, उस विधि एक POST पद्धति नहीं है। आप इसे वेब क्लाइंट

WebClient wc = new WebClient() 
Uri uri = new Uri("http://yourUri/LogError/ABC/XYZ"); //ABC is your message and XYZ is your stacktrace string. 
wc.DownloadStringAsync(uri); 

या यदि आप वास्तविक HTTP 'पोस्ट' के बारे में सोच रहे हैं तो नीचे कॉल कर सकते हैं। आप HttpWebRequest उपयोग कर सकते हैं किसी भी सेवा करने के लिए पर एक पोस्ट करने के लिए जो पोस्ट

स्वीकार कर रहा है इस कड़ी में सहायक हो सकता है - WCF REST POST XML - The remote server returned an error: (400) Bad Request

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