java - Bing Ads Java API BudgetSummaryReportRequest 示例代码

标签 java bing-ads-api

我正在尝试运行基本 report download example从 Bing Ads 文档中,我设法修改示例代码以通过更改 get<REPORT_TYPE>ReportRequest() 下载其他几种报告类型。方法。

我遇到的一种报告类型是预算摘要报告。

我像这样创建报告请求:

private static ReportRequest getBudgetSummaryReportRequest(){
        BudgetSummaryReportRequest report = new BudgetSummaryReportRequest();

        report.setFormat(ReportFormat.CSV);
        report.setReportName("My Budget Summary Report");
        report.setReturnOnlyCompleteData(false);

        ArrayOflong accountIds = new ArrayOflong();
        accountIds.getLongs().add(authorizationData.getAccountId());


        report.setScope(new AccountThroughCampaignReportScope());
        report.getScope().setAccountIds(accountIds);
        ArrayOfCampaignReportScope c = new ArrayOfCampaignReportScope();
        CampaignReportScope cc = new CampaignReportScope();
        cc.setAccountId(authorizationData.getAccountId());
        cc.setCampaignId(<MY_CAMPAIGN_ID>);
        c.getCampaignReportScopes().add(cc);
        report.getScope().setCampaigns(c);

        report.setTime(new BudgetSummaryReportTime());
         report.getTime().setPredefinedTime(BudgetSummaryReportTimePeriod.TODAY);

        ArrayOfBudgetSummaryReportColumn budgetSummaryReportColumns = new ArrayOfBudgetSummaryReportColumn();
        budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.ACCOUNT_ID);
        budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.CAMPAIGN_ID);
        budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.DATE);
        budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.CURRENCY_CODE);
        budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.MONTHLY_BUDGET);
        budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.MONTH_TO_DATE_SPEND);
        budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.DAILY_SPEND);

        return report;
    }

然后使用ReportRequest main 方法中的对象(请参阅示例中的 reportRequest 字段)。但无论我做什么,当我尝试运行它时,我总是会收到以下错误:

java.util.concurrent.ExecutionException: com.microsoft.bingads.reporting.CouldNotSubmitReportingDownloadException: java.util.concurrent.ExecutionException: com.microsoft.bingads.reporting.ApiFaultDetail_Exception: Invalid client data. Check the SOAP fault details for more information
    at com.microsoft.bingads.internal.ResultFuture.get(ResultFuture.java:96)
    at ads.ReportRequests.backgroundCompletion(ReportRequests.java:172)
    at ads.ReportRequests.main(ReportRequests.java:90)
Caused by: com.microsoft.bingads.reporting.CouldNotSubmitReportingDownloadException: java.util.concurrent.ExecutionException: com.microsoft.bingads.reporting.ApiFaultDetail_Exception: Invalid client data. Check the SOAP fault details for more information
    at com.microsoft.bingads.reporting.ReportingServiceManager$3.handleResponse(ReportingServiceManager.java:216)
    at org.apache.cxf.jaxws.JaxwsClientCallback.handleException(JaxwsClientCallback.java:87)
    at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:821)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1638)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:1145)
    at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$3.run(AutomaticWorkQueueImpl.java:428)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$AWQThreadFactory$1.run(AutomaticWorkQueueImpl.java:353)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.util.concurrent.ExecutionException: com.microsoft.bingads.reporting.ApiFaultDetail_Exception: Invalid client data. Check the SOAP fault details for more information
    at org.apache.cxf.jaxws.JaxwsClientCallback$2.get(JaxwsClientCallback.java:99)
    at com.microsoft.bingads.reporting.ReportingServiceManager$3.handleResponse(ReportingServiceManager.java:202)
    ... 9 more
Caused by: com.microsoft.bingads.reporting.ApiFaultDetail_Exception: Invalid client data. Check the SOAP fault details for more information
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.apache.cxf.interceptor.ClientFaultConverter.processFaultDetail(ClientFaultConverter.java:182)
    at org.apache.cxf.interceptor.ClientFaultConverter.handleMessage(ClientFaultConverter.java:82)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
    at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113)
    at org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor.handleMessage(SOAPHandlerInterceptor.java:140)
    at org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor.handleMessage(SOAPHandlerInterceptor.java:71)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
    at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:780)
    ... 7 more

对于其他报告类型,此错误通常意味着我忘记设置一些必需的参数(例如范围)。我只是不知道。如何调试这个问题(例如检查错误消息提到的“SOAP 数据”)?

有人有下载预算摘要报告的工作示例吗?

编辑:下面埃里克·厄本的回答解决了我的问题。每个报告请求类型都有一些需要手动指定并添加到 ReportRequest 对象中的列。

最佳答案

一些更新应该可以解决此问题。首先,您需要添加缺少的必需列。核心服务引用指南中记录了每个值集的所需列,例如请参阅BudgetSummaryReportColumn Value Set 。其次,您需要将列数组添加到报告请求中。

budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.ACCOUNT_NAME);
budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.ACCOUNT_NUMBER);
budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.CAMPAIGN_NAME);
report.setColumns(budgetSummaryReportColumns);

有关如何捕获 SOAP 请求和响应的详细信息,请参阅 Troubleshooting Bing Ads Java SDK 。例如,我目前正在使用 Spring Framework 和 Apache CXF。

希望这会有所帮助!

关于java - Bing Ads Java API BudgetSummaryReportRequest 示例代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41169141/

相关文章:

Java,系统架构,正确实现

php - Bing Ads API V11 异常 : Invalid client data. 查看 SOAP 错误详细信息以获取更多信息

bing-ads-api - Bing Ads API 快速入门 : for use by Microsoft Account users only. 请使用/consumers 端点来处理此请求

java.lang.NoClassDefFoundError : Could not initialize class

java - 为什么浏览器能够查看最大年龄为 0 的 cookie 而编程语言却不能?

java - 在比较两个具有相同值的 stringbuilder 对象时,StringBuilder 给我错误的值?

java - 如何从sqlite中的其他表引用数组的blob列

java - 这是静态类合理性的正确想法吗