2015-04-16 3 views
2

У меня есть вопросы об этом создании/обновлении API, http://developers.marketo.com/documentation/rest/createupdate-leads/. Нет образца кода для C# или JAVA. Доступен только рубин. Поэтому я должен попробовать это самостоятельно. Но я всегда получаю нулевой возврат от ответа. Вот мой код:Marketo rest Api create lead

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-интерфейс. Затем вы увидите точное сообщение об ошибке, которое вы можете посмотреть здесь: http://developers.marketo.com/documentation/rest/error-codes/. Исходя из этого, вы можете обновить свой код. Я не очень разбираюсь в Java, но именно так я получил код Python для работы.

0

Ваш примерный код был действительно полезен при получении моей собственной реализации с земли. Благодаря!

Поиграв с ним немного, я понял, что шаг JavaScriptSerializer не нужен, так как PostAsJsonAsync автоматически сериализует любой объект, который вы передаете ему. Двойная сериализация не позволяет API Marketo обрабатывать входные данные.

Кроме того, я согласен с Jep, что почтальон очень полезен. Но в случае этой ошибки Почтальон работал нормально (используя содержимое inputJsonString), но мой код C# все еще не работал должным образом. Поэтому я временно изменил код, чтобы вернуть объект dynamic вместо . В режиме отладки это позволило мне увидеть поля, которые были отброшены, потому что они не соответствовали типу , что привело меня к решению выше.

 Смежные вопросы

  • Нет связанных вопросов^_^