2012-02-29 14 views
11

मैं SalesForce जानकारी को .NET MVC एप्लिकेशन में एकीकृत करना चाहता हूं।क्या बिक्री बल आरईएसटी एपीआई के लिए सी # रैपर उपलब्ध है?

सेल्सफोर्स वेबसाइट पर नमूने सभी SOAP हैं जहां तक ​​मैं देख सकता हूं, या वैकल्पिक रूप से एक SalesForce ADO.NET डेटा प्रदाता है।

http://wiki.developerforce.com/page/Web_Services_API#.NET

धन्यवाद।

उत्तर

6

एक .NET टूल किट announced बिक्री बल द्वारा किया गया था।

".NET के लिए Force.com Toolkit .NET डेवलपर्स के लिए बल के साथ बातचीत करने का एक आसान तरीका प्रदान करता है।कॉम REST API का एक देशी पुस्तकालयों का उपयोग कर। "

https://github.com/developerforce/Force.com-Toolkit-for-NET/

2

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

चेक Dan's .NET blog

+0

जवाब के लिए धन्यवाद। मैं इसे सर्वर साइड का उपयोग किया जाएगा अन्य प्रणालियों में एकीकृत करने के। मैं वास्तव में कुछ है कि का प्रतिनिधित्व वर्गों में WebResponse पार्स हैं के लिए उम्मीद की गई थी एसएफ संसाधन लौटे, और ठोस त्रुटि हैंडलिंग - कठिन सामग्री :) –

+0

यदि आप मजबूत टाइपिंग चाहते हैं तो आपको डब्लूएसडीएल मार्ग पर जाना चाहिए और वेब सेवाओं का उपयोग करना चाहिए। आरईएसटी स्वयं एक सेट प्रोटोकॉल के बजाय एक वास्तुशिल्प विचार है जो सार्वभौमिक हो सकता है कोड जनरेशन, यह JSON के उपयोग को भी जरूरी नहीं करता है जो एसएफ restApi का उपयोग करता है और इसमें कोई मानकीकृत मेटाडेटा शामिल नहीं है जिसे आप पार्स कर सकते हैं और कक्षाएं बना सकते हैं। सिद्धांत में आप मेटाडेटा को पुनर्प्राप्त करने के लिए/sobjects/'object_name'/वर्णन का उपयोग कर सकते हैं यथाशीघ्र विकास प्रक्रियाओं का आरटी, फिर इसके लिए कक्षाएं बनाएं और 'जावास्क्रिप्टसेरियलाइज़र' का उपयोग करें। 'डिसेरियलाइज करें। होवेवर, यह लगता है और वास्तव में दर्द है :) – mmix

3

मैं वास्तव में कुछ है कि एस एफ संसाधनों का प्रतिनिधित्व लौटे वर्गों में WebResponse पार्स होता है, और ठोस त्रुटि हैंडलिंग के लिए उम्मीद कर रहा था - कठिन सामान :)

यह अस्तित्व में है - इसे एसओएपी एपीआई कहा जाता है :) गंभीरता से हालांकि, यदि आप सर्वर-साइड एकीकरण कर रहे हैं और टाइप किए गए वर्ग और ठोस त्रुटि हैंडलिंग टाइप करना चाहते हैं, तो एसओएपी आपकी टट्टू है।

3

मैं कॉल को सरल बनाने और वस्तुओं को डी-क्रमबद्ध करने के लिए RestSharp का उपयोग करता हूं, लेकिन आपको अभी भी सभी Salesforce त्रुटि कोडों को संभालना होगा। इसमें कुछ ओएथ कार्यक्षमता भी बनाई गई है, लेकिन जो संस्करण मैं उपयोग कर रहा हूं (लगभग 2 महीने पुराना) ओएथ 2 का बहुत अच्छा समर्थन नहीं करता है। यह अभी भी एक दर्द है, लेकिन यदि आप बहुत सारे डेटा खींच रहे हैं तो इसके लायक हैं।

+0

दिलचस्प, मैं RestSharp पर एक नज़र डालेगा। मैं एएसपीनेट वेब एपीआई नमूने देख रहा था जहां वे OAuth2 के माध्यम से ट्विटर तक पहुंचने के लिए विस्तारित होते हैं: http://code.msdn.microsoft.com/Extending-HttpClient-with-8739f267 –

+0

लिंक के लिए धन्यवाद, मैं निश्चित रूप से जांच करूंगा वह बाहर हालांकि OAuth2 के लिए यह नमूना है? मैंने इसे बारीकी से नहीं देखा है, लेकिन मैंने oauth_ उपसर्ग देखा है, जिसे Salesforce OAuth2 सेवा में लागू नहीं किया गया है। – Sprockincat

0

पासवर्ड वर्कफ़्लो का उपयोग करके नमूना कोड यहां दिया गया है। यह पहुँच टोकन हो जाता है और एपीआई प्रश्नों:

public static string Login() 
{ 
    string responseJsonString = string.Empty; 
    StringBuilder str = new StringBuilder(); 
    str.AppendFormat("{0}?grant_type=password&client_id={1}&client_secret={2}&username={3}&password={4}" 
        , LoginOAuthUrl, ClientID, ClientSecret, ClientUserName, ClientPassword); 
    // Request token 
    try 
    { 
     HttpWebRequest request = WebRequest.Create(str.ToString()) as HttpWebRequest; 

     if (request != null) 
     { 
      request.Method = "POST"; 
      using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
      { 
       if (response.StatusCode == HttpStatusCode.OK) 
       { 
        // Get the "access_token" and "instance_url" from the response. 
        // Convert the JSON response into a token object 


        // Here we get the response as a stream. 
        using (StreamReader responseStream = new StreamReader(response.GetResponseStream())) 
        { 
         responseJsonString = responseStream.ReadToEnd(); 
         // Deserialize JSON response into an Object. 
         JsonValue value = JsonValue.Parse(responseJsonString); 
         JsonObject responseObject = value as JsonObject; 
         AccessToken = (string)responseObject["access_token"]; 
         InstanceUrl = (string)responseObject["instance_url"]; 
         return "We have an access token: " + AccessToken + "\n" + "Using instance " + InstanceUrl + "\n\n"; 
        } 
       } 
      } 
     } 
     return responseJsonString; 
    } 
    catch (Exception ex) 
    { 
     throw new Exception(string.Format("Unable to login to salesforce: {0}", str), ex); 
    } 
} 

public static string Query() 
{    
    string RequestUrl = InstanceUrl + "/services/data/v28.0/query"; 
    string queryParam = "q=" + QUERY; 
    // Read the REST resources 
    string responseJsonString = HttpGet(RequestUrl, queryParam); 
    return responseJsonString; 
} 

public static string HttpGet(string URI, string Parameters) 
{ 
    // Add parameters to the URI 
    string requestUri = URI + "?" + Parameters; 
    System.Net.WebRequest req = System.Net.WebRequest.Create(requestUri); 
    req.Method = "GET"; 
    req.Headers.Add("Authorization: OAuth " + AccessToken); 

    // Do the GET request 
    System.Net.WebResponse resp = req.GetResponse(); 
    if (resp == null) return null; 
    System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()); 
    return sr.ReadToEnd().Trim(); 
} 
7

आप एक Salesforce के REST API क्लाइंट लाइब्रेरी के लिए देख रहे हैं, SalesforceSharp पर एक नज़र डालें।

यह आरईएसटी एपीआई से रिकॉर्ड्स बनाने, अपडेट करने, हटाने और क्वेरी का समर्थन करता है।

बनाएं

client.Create("Account", 
    new { Name = "name created", Description = "description created" })); 

अद्यतन

client.Update("Account", "<record id>", 
    new { Description = "description updated" })); 

हटाएँ

client.Delete("Account", "<ID">); 

क्वेरी

var records = client.Query<Account>("SELECT id, name, description FROM Account"); 

आजकल यह उपयोगकर्ता नाम-पासवर्ड प्रमाणीकरण प्रवाह का समर्थन करता है, लेकिन दूसरों से बहती है (वेब ​​सर्वर और उपयोगकर्ता-एजेंट) बनाया और इंजेक्ट किया जा सकता।

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