簡體   English   中英

如何從標准中獲取ipAddress信息?

[英]how can I get ipAddress info from criterion?

我正在使用Google Adwords,目前無法獲取具體信息。 在我的Adwords帳戶中,我設置了3個IP的“IP地址排除”。 我想從我的代碼中獲取此IP:

AdWordsUser user = new AdWordsUser();
var campaignService = (CampaignCriterionService)user.GetService(AdWordsService.v201506.CampaignCriterionService);
int offset = 0;
        int pageSize = 500;

        var page = new CampaignCriterionPage();
        String awql = "SELECT Id where IsNegative = true ORDER BY Id ASC LIMIT " + offset + "," + pageSize;
try
        {
            do
            {   
                page = campaignService.query(awql);

                // Display the results.
                if (page != null && page.entries != null)
                {
                    int i = offset;
                    foreach (var item in page.entries)
                    {
                        var t = item; //my work logic here ....                           
                        i++;
                    }
                }
                offset += pageSize;
            } while (offset < page.totalNumEntries);
            Debug.WriteLine("Number of items found: {0}", page.totalNumEntries);
        }
        catch (Exception e)
        {
            throw new System.ApplicationException("Failed to retrieve campaigns", e);
        }

查詢返回結果數:3,但沒有關於ipAddress的實際信息(ipAddress包含null)。

我能做什么?

不幸的是,我不相信AWQL為被阻止的IP的地址提供了一個選擇器。 在任何情況下,它肯定沒有提供您上面使用的AWQL語句,它只返回Id字段:

 String awql = "SELECT Id where IsNegative = true ORDER BY Id ASC LIMIT " + offset + "," + pageSize; try 

這就是您的響應中值為null的原因。

我認為可能的唯一方法是使用該服務的SelectorPredicate對象,並使用get()方法而不是query()方法。

這個解決方案適合我(誠然使用更高版本的API)

var campaignCriterionService = (CampaignCriterionService)user.GetService(AdWordsService.v201601.CampaignCriterionService);
int offset = 0;
int pageSize = 500;

var page = new CampaignCriterionPage();

try
{
    do
    {
        page = campaignCriterionService.get(new Selector
        {
            fields = new string[] { IpBlock.Fields.Id, IpBlock.Fields.IpAddress },
            predicates = new Predicate[]
            {
                new Predicate
                {
                    field = IpBlock.Fields.CriteriaType,
                    @operator = PredicateOperator.EQUALS,
                    values = new string[] { "IP_BLOCK" }
                }
            }
        });

        // Display the results.
        if (page != null && page.entries != null)
        {
            int i = offset;
            foreach (var item in page.entries)
            {
                var t = item; //my work logic here ....                           
                i++;
            }
        }
        offset += pageSize;
    } while (offset < page.totalNumEntries);
    Debug.WriteLine("Number of items found: {0}", page.totalNumEntries);
}
catch (Exception e)
{
    throw new System.ApplicationException("Failed to retrieve campaigns", e);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM