2015-08-27 3 views
0

Im пытается получить место в моей кампании с использованием Adwords API, им имеющей ошибку:Получить Расположение от ADWORDS апи

Исключения в потоке «основной» java.lang.ClassCastException: com.google.api. ads.adwords.axis.v201506.cm.Языка не может быть добавлена ​​в com.google.api.ads.adwords.axis.v201506.cm.Location по адресу adwords.axis.v201506.basicoperations.GetCampaigns.locationExample (GetCampaigns.java: 312) на adwords.axis.v201506.basicoperations.GetCampaigns.main (GetCampaigns.java:86)

И это мой код им с помощью Java:

public static void locationExample(
      AdWordsServices adWordsServices, AdWordsSession session, Long adGroupId) throws Exception { 

     CampaignCriterionServiceInterface campaignCriterionService = 
      adWordsServices.get(session, CampaignCriterionServiceInterface.class); 

     int offset = 0; 
     boolean morePages = true; 

     // Create selector. 
     SelectorBuilder builder = new SelectorBuilder(); 
     Selector selector = builder 
      .fields(
       CampaignCriterionField.Id, 
       CampaignCriterionField.CriteriaType, 
       CampaignCriterionField.LocationName) 
      .orderAscBy(CampaignCriterionField.Id) 
      .offset(offset) 
      .limit(PAGE_SIZE) 
      .build(); 

     while (morePages) { 

      CampaignCriterionPage page = campaignCriterionService.get(selector); 


      if (page.getEntries() != null && page.getEntries().length > 0) { 

      for (CampaignCriterion campaignCriterionResult : page.getEntries()) { 
      Location location = (Location) campaignCriterionResult.getCriterion(); 
      System.out.println("Location ID: "+location.getId()); 
      System.out.println("Location Name: "+location.getLocationName()); 
      System.out.println("Location Bid adjustment: "); 
      System.out.println("Location Type: "+location.getType()); 
      // System.out.println("Location Reach: "+location.get); 
      } 
      } else { 
      System.out.println("No ad group criteria were found."); 
      } 

      offset += PAGE_SIZE; 
      selector = builder.increaseOffsetBy(PAGE_SIZE).build(); 
      morePages = offset < page.getTotalNumEntries(); 
     } 
     } 

Мой главный вопрос заключается в том, как я могу получить расположение и язык Adwords API.

ответ

1

CampaignCriterion извлекает все критерии, связанные с кампанией, поэтому вы не можете подвергать объект критерия одному типу (Location), потому что это может быть другой класс. Эта линия является неправильным:

Location location = (Location) campaignCriterionResult.getCriterion();

Вместо этого, вы должны проверить тип, прежде чем литой объект. Например:

for(CampaignCriterion criterion: criterions) { 
    if(criterion.getCriterion().getCriterionType().equals("Location")) { 
     Location location = (Location) criterion.getCriterion(); 
     // Your code 
    } 
} 
Смежные вопросы