2015-04-16 62 views
2

我有一個關於這個創建/更新線索API,http://developers.marketo.com/documentation/rest/createupdate-leads/的問題。 沒有C#或JAVA的示例代碼。只有紅寶石可用。所以我必須自己嘗試一下。但我總是從回覆中得到空回報。 這是我的代碼:Marketo其餘Api創建鉛

private async Task<CreateLeadResponseResult> CreateLead(string token) 
    { 

     string url = String.Format(marketoInstanceAddress+"/rest/v1/leads.json?access_token={0}", token); 
     var fullUri = new Uri(url, UriKind.Absolute); 
     CreateLeadResponseResult createLeadResponse = new CreateLeadResponseResult(); 
     CreateLeadInput input = new CreateLeadInput { email = "[email protected]", lastName = "Lee", firstName = "testtesttest", postCode = "00000" }; 
     CreateLeadInput input2 = new CreateLeadInput { email = "[email protected]", lastName = "Lio", firstName = "ttttttt", postCode = "00000" }; 
     List<CreateLeadInput> inputList = new List<CreateLeadInput>(); 
     inputList.Add(input); 
     inputList.Add(input2); 

     CreateLeadRequest createLeadRequest = new CreateLeadRequest() { input = inputList }; 
     JavaScriptSerializer createJsonString = new JavaScriptSerializer(); 
     string inputJsonString = createJsonString.Serialize(createLeadRequest); 

     using (var client = new HttpClient()) 
     { 

      HttpResponseMessage response = await client.PostAsJsonAsync(fullUri.OriginalString, inputJsonString).ConfigureAwait(false); 
      // I can see the JSON string is in the message body in debugging mode. 

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

     return createLeadResponse;} 
     //get null here. 

謝謝。 -C。

回答

1

調試此功能的最佳方式是捕獲應用程序提交的確切URL,參數和JSON,並嘗試通過Postman(Chrome插件)或SOAP UI等工具手動提交這些內容。然後你會看到確切的錯誤信息,你可以在這裏查看:http://developers.marketo.com/documentation/rest/error-codes/。基於此,您可以更新您的代碼。我對Java不太瞭解,但這是我如何讓Python代碼工作的。

0

您的示例代碼對於實現我自己的實現非常有幫助。謝謝!

玩了一會之後,我意識到JavaScriptSerializer這一步是不必要的,因爲PostAsJsonAsync會自動將您傳遞給它的任何對象序列化。雙重序列化防止Marketo的API處理輸入。

此外,我同意Jep郵遞員是超級有用的。但在這個錯誤的情況下,郵差工作正常(使用inputJsonString的內容),但我的C#代碼仍然無法正常工作。所以我暫時修改了代碼來返回dynamic對象而不是。在調試模式下,這允許我看到由於不適合類型而被丟棄的字段,這導致了我上面的解決方案。