2014-10-29 2 views
6

.net/C#에서 Marketo Rest API를 호출하는 예제가있는 사람이 있습니까?.net/c에서 Marketo Rest API를 호출하기위한 샘플 코드 #

특히 oauth 인증 부분에 관심이 있습니다. http://developers.marketo.com/documentation/rest/authentication/

는 내가 거기 밖으로 interweb에 어떤 예를 찾을 수 없습니다 http://developers.marketo.com/documentation/rest/get-multiple-leads-by-list-id/

이 엔드 포인트를 호출 할 계획입니다.

+0

.net/C#을 사용하여 Market REST API를 호출하는 것에 대한 예제 또는 문서는 없습니다. 왜 누군가가 그 질문을 좋아하지 않았는지 모르겠습니다. – Cameron

+0

왜 이것을 다운 그레이드 했습니까? 이것은 유효한 질문입니다. –

답변

6

Marketo Rest API를 호출하고 OAuth를 수행 할 수있는 솔루션을 코딩 할 수있었습니다. 아래는 방법입니다 아래 코드는 기본 사항을 보여줍니다. 그러나 정리 작업, 로깅 및 오류 처리가 필요합니다.

Marketi 인스턴스의 나머지 API URL을 가져와야합니다. 이렇게하려면 marketo에 로그인하고 Admin \ Integration \ Web Services로 이동 한 다음 Rest API 섹션의 URL을 사용하십시오.

마켓에서 사용자 ID와 비밀번호를 가져와야합니다. Admin \ Integration \ Launch Pont으로 이동하십시오. 귀하의 휴식 서비스의 세부 사항을보고 신분과 비밀을 얻으십시오. 서비스가없는 경우 다음 지침을 따르십시오 http://developers.marketo.com/documentation/rest/custom-service/.

마지막으로 얻으려는 리드 목록의 목록 ID가 필요합니다. 귀하의 목록으로 이동하여 URL 밖의 ID의 숫자 부분을 복사하면됩니다. 예 : https://XXXXX.marketo.com/#ST1194B2 -> 목록 ID = 1194

 private void GetListLeads() 
    { 
     string token = GetToken().Result; 

     string listID = "XXXX"; // Get from Marketo UI 
     LeadListResponse leadListResponse = GetListItems(token, listID).Result; 
     //TODO: do something with your list of leads 

    } 
    private async Task<string> GetToken() 
    { 
     string clientID = "XXXXXX"; // Get from Marketo UI 
     string clientSecret = "XXXXXX"; // Get from Marketo UI 

     string url = String.Format("https://XXXXXX.mktorest.com/identity/oauth/token?grant_type=client_credentials&client_id={0}&client_secret={1}",clientID, clientSecret); // Get from Marketo UI 
     var fullUri = new Uri(url, UriKind.Absolute); 

     TokenResponse tokenResponse = new TokenResponse(); 
     using (var client = new HttpClient()) 
     { 
      HttpResponseMessage response = await client.GetAsync(fullUri); 

      if (response.IsSuccessStatusCode) 
      { 
       tokenResponse = await response.Content.ReadAsAsync<TokenResponse>(); 
      } 
      else 
      { 
       if (response.StatusCode == HttpStatusCode.Forbidden) 
        throw new AuthenticationException("Invalid username/password combination."); 
       else 
        throw new ApplicationException("Not able to get token"); 
      } 
     } 

     return tokenResponse.access_token; 
    } 

    private async Task<LeadListResponse> GetListItems(string token, string listID) 
    { 

     string url = String.Format("https://XXXXXX.mktorest.com/rest/v1/list/{0}/leads.json?access_token={1}", listID, token);// Get from Marketo UI 
     var fullUri = new Uri(url, UriKind.Absolute); 

     LeadListResponse leadListResponse = new LeadListResponse(); 
     using (var client = new HttpClient()) 
     { 
      HttpResponseMessage response = await client.GetAsync(fullUri); 

      if (response.IsSuccessStatusCode) 
      { 
       leadListResponse = await response.Content.ReadAsAsync<LeadListResponse>(); 
      } 
      else 
      { 
       if (response.StatusCode == HttpStatusCode.Forbidden) 
        throw new AuthenticationException("Invalid username/password combination."); 
       else 
        throw new ApplicationException("Not able to get token"); 
      } 
     } 

     return leadListResponse; 
    } 


    private class TokenResponse 
    { 
     public string access_token { get; set; } 
     public int expires_in { get; set; } 
    } 

    private class LeadListResponse 
    { 
     public string requestId { get; set; } 
     public bool success { get; set; } 
     public string nextPageToken { get; set; } 
     public Lead[] result { get; set; } 
    } 

    private class Lead 
    { 
     public int id { get; set; } 
     public DateTime updatedAt { get; set; } 
     public string lastName { get; set; } 
     public string email { get; set; } 
     public DateTime datecreatedAt { get; set; } 
     public string firstName { get; set; } 
    } 
1

오래된 질문, 단지이 페이지는 시간에 거기 아마이었다

:-) Google 검색에서 여기서 끝나는 다음 사람을 돕기 위해 희망 이 게시물의,하지만 지금은 여러 언어로 예제와 좋은 페이지가 있습니다. 이 페이지는 API 호출을 모두 가지고 - 링크가 여기 죽은 간다 그냥 경우 http://developers.marketo.com/documentation/rest/get-multiple-leads-by-list-id

들이 C#

이 응답의 때
using Newtonsoft.Json; 
using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Net; 
using System.Text; 
using System.Threading.Tasks; 

namespace Samples 
{ 
    class LeadsByList 
    { 
     private String host = "CHANGE ME"; //host of your marketo instance, https://AAA-BBB-CCC.mktorest.com 
     private String clientId = "CHANGE ME"; //clientId from admin > Launchpoint 
     private String clientSecret = "CHANGE ME"; //clientSecret from admin > Launchpoint 
     public int listId; 
     public int batchSize;//max 300, default 300 
     public String[] fields;//array of field names to retrieve 
     public String nextPageToken;//paging token 
     /* 
     public static void Main(String[] args) 
     { 
      MultipleLeads leads = new MultipleLeads(); 
      leads.listId = 1001 
      String result = leads.getData(); 
      Console.WriteLine(result); 
      while (true) 
      { 

      } 
     } 
     */ 
     public String getData() 
     { 
      StringBuilder url = new StringBuilder(host + "/rest/v1/list/" + listId + "/leads.json?access_token=" + getToken()); 
      if (fields != null) 
      { 
       url.Append("&fields=" + csvString(fields)); 
      } 
      if (batchSize > 0 && batchSize < 300) 
      { 
       url.Append("&batchSize=" + batchSize); 
      } 
      if (nextPageToken != null) 
      { 
       url.Append("&nextPageToken=" + nextPageToken); 
      } 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url.ToString()); 
      request.ContentType = "application/json"; 
      request.Accept = "application/json"; 
      HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
      Stream resStream = response.GetResponseStream(); 
      StreamReader reader = new StreamReader(resStream); 
      return reader.ReadToEnd(); 
     } 

     private String getToken() 
     { 
      String url = host + "/identity/oauth/token?grant_type=client_credentials&client_id=" + clientId + "&client_secret=" + clientSecret; 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
      request.ContentType = "application/json"; 
      HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
      Stream resStream = response.GetResponseStream(); 
      StreamReader reader = new StreamReader(resStream); 
      String json = reader.ReadToEnd(); 
      //Dictionary<String, Object> dict = JavaScriptSerializer.DeserializeObject(reader.ReadToEnd); 
      Dictionary<String, String> dict = JsonConvert.DeserializeObject<Dictionary<String, String>>(json); 
      return dict["access_token"]; 
     } 
     private String csvString(String[] args) 
     { 
      StringBuilder sb = new StringBuilder(); 
      int i = 1; 
      foreach (String s in args) 
      { 
       if (i < args.Length) 
       { 
        sb.Append(s + ","); 
       } 
       else 
       { 
        sb.Append(s); 
       } 
       i++; 
      } 
      return sb.ToString(); 

     } 
    } 
} 

을 제공하는 코드 예제가에 페이지입니다 문서화 됨 http://developers.marketo.com/documentation/rest/