2016-12-15 7 views
1

私はBing Adsのドキュメントから基本的なreport download exampleを実行しようとしていて、get<REPORT_TYPE>ReportRequest()メソッドを変更していくつかの他のレポートタイプをダウンロードするサンプルコードを変更することができました。Bing Ads Java API BudgetSummaryReportRequest example code

私が苦労しているレポートタイプは、予算概要レポートです。

私はこのような報告書の要求の作成:

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オブジェクトを使用する(例では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データ」を調べるなど)?

予算サマリーレポートのダウンロードにはどのような例がありますか?

EDIT:以下、エリックアーバンの回答が私の問題を解決しました。すべてのレポート要求タイプには、手動で指定してReportRequestオブジェクトに追加する必要のある列があります。

答えて

1

この問題を解決するには、いくつかのアップデートが必要です。まず、欠落している必要な列を追加する必要があります。コアサービスリファレンスガイドに設定されている各値について、必要な列が文書化されています。 BudgetSummaryReportColumn Value Setをご覧ください。次に、列の配列をレポート要求に追加する必要があります。 SOAPリクエストとレスポンスをキャプチャする方法の詳細については

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

Troubleshooting Bing Ads Java SDKを参照してください。たとえば、私は現在Spring FrameworkとApache CXFを使用しています。

こちらがお役に立てば幸いです。

+0

ありがとう、私は必要な列を手動で含める必要があることを認識しませんでした。それにもかかわらず、列を追加しても問題は解決されず、同じエラーが発生します。私はSOAPトラフィックをキャプチャしようとしますが、私は実際にそのことから何を期待するべきかわかりません... – grepe

+0

私は、間違った配列の列を追加していました。質問のビット感情の定式化。 – grepe

+0

問題が解決したらうれしいです!これは素晴らしいフィードバックであり、SDKを使いやすくする方法とトラブルシューティングガイドをより発見しやすくする方法をもう一度見ていきます。フォローアップの質問がある場合はお気軽にお問い合わせください。 –