处理服务错误和异常

本文介绍有关错误处理和排查应用程序问题的详细信息。

提示

创建 SOAP 请求消息时,请确保元素的顺序与 Web 服务描述语言 (WSDL) 中定义的顺序相同。 如果所需的元素无序,调用将失败。 如果可选元素无序,调用可能会失败,或者元素将被忽略。 有关详细信息,请参阅 SOAP XML 元素顺序

常见 API 错误

下面是处理可能会遇到的常见服务错误的一些提示。 有关Bing Ads API 错误代码的完整列表,请参阅 操作错误代码

代码 105

通常指示使用不正确的访问令牌 (AuthenticationToken 标头元素) 或目标环境的开发人员令牌。 例如,凭据在生产环境中可能有效;但是,当面向沙盒时,你会观察到代码 105

代码 106

通常指示虽然凭据适用于目标环境,但用户无权访问请求中指定的实体之一。 例如,如果用户对指定帐户没有权限,则会看到此错误调用 SubmitGenerateReportRequest

代码 117

如果超出服务调用限制,将看到以下错误:

  • 数字错误代码: 117
  • 符号错误代码: CallRateExceeded
  • 消息: 已超出一分钟内允许的调用数。请减少每分钟发出的调用数。

出现此错误时,可以在等待 60 秒后,在限制下重新提交请求。

内部错误

有时,服务可能会返回内部错误,如下所示:

<OperationError>
  <Code>0</Code>
  <Details i:nil="true"/>
  <ErrorCode>InternalError</ErrorCode>
  <Message>An internal error has occurred.</Message>
</OperationError>

下面是一些可能的内部错误方案:

  • 这是一个暂时的系统问题,你无法执行任何操作。 如果以前相同的调用适用于你,请稍后重试,以防我们解决了服务器端的问题。
  • 操作未正确映射到可操作错误代码。 理想情况下,如果客户端可以执行任何操作来解决此问题,Bing Ads API 应返回可操作的错误代码。 如果一直观察到内部错误,请联系 支持人员 以了解详细信息。

HTTP 500

所有Bing Ads API 服务操作都遵循简单对象访问协议 (SOAP) 1.1 规范,其中使用 HTTP 500 代码返回错误。 例如,请参阅以下内容。

HTTP/1.1 500 Internal Server Error

这本身并不代表可操作代码,应检查错误详细信息,了解有关特定错误的详细信息。

无法创建抽象类

不能创建基类(如 Ad)的实例。 必须实例化其中一个派生类,例如 ExpandedTextAd

为什么我从报告 API 调用中获取空 URL?

即使报表 “状态” 设置为“成功”,如果提交的报告参数没有可用的数据, 则 ReportDownloadUrl 元素也可以为零。 如果在Microsoft广告 Web 应用程序中看到相同日期范围和筛选条件的性能数据,请联系 支持人员 以了解详细信息。

常见的 OAuth 错误

下面是处理可能会遇到的常见授权错误的一些提示。

AADSTS 错误

AADSTS 错误代码和消息可能会更改。 有关最新信息,请查看 https://login.microsoftonline.com/error 页面,查找 AADSTS 错误说明、修复和一些建议的解决方法。

搜索返回的错误代码的数值部分。 例如,如果收到错误代码“AADSTS650052”,请在 中 https://login.microsoftonline.com/error 搜索“650052”。 还可以通过将错误代码号添加到 URL 直接链接到特定错误: https://login.microsoftonline.com/error?code=650052

下面更详细地描述了一些最常见的 AADSTS 错误,例如AADSTS50011、AADSTS650052和AADSTS700016。

AADSTS50011

使用 Microsoft 标识平台 终结点请求访问令牌时,可能会在 JSON 字符串中返回AADSTS50011错误,如下所示。

{"error":"invalid_client","error_description":"AADSTS50011: The reply url specified in the request
does not match the reply urls configured for the application: 'foo'.\r\nTrace ID:
x\r\nCorrelation ID: x\r\nTimestamp: 2019-05-10
17:18:23Z","error_codes":[50011],"timestamp":"2019-05-10
17:18:23Z","trace_id":"x","correlation_id":"x"}

请求用户同意时,还可以在浏览器窗口中以文本的形式返回无效的重定向 URI 错误,如下所示。

invalid_request:输入参数“redirect_uri”提供的值无效。 预期值为与为此客户端应用程序注册的重定向 URI 匹配的 URI。

如果观察到此错误,则重定向 URI 未正确 注册,或者应用程序未使用已注册的重定向 URI。

AADSTS650052

可以返回650052错误代码,并显示消息“应用需要访问服务 (”https://ads.microsoft.com") 组织“{organization}”尚未订阅或启用。

如果观察到此错误,请确保在 Microsoft Advertising Web 应用程序中至少有一个来自 Azure AAD 租户的管理员用户添加并启用了工作帐户请联系支持人员以获取进一步的帮助。

AADSTS700016

返回700016错误代码,并显示消息“在目录'{tenantName}'中找不到标识符为'{appIdentifier}'的应用程序”。

如果具有格式化为十六进制值(例如 0000000012345A67)的较旧应用程序 ID (又称为客户端 ID) ,则必须 注册 新应用程序。 用于 Microsoft 标识平台 的有效应用程序 ID 的格式设置为带有短划线的 GUID,例如 00001111-aaaa-2222-bbbb-3333cccc4444。 如果在Azure 门户 -应用注册中看不到现有应用,则表明应将其替换为新应用。

重定向 URI 无效

使用 Live Connect 终结点请求访问令牌时,JSON 字符串中可能会返回无效的重定向 URI 错误,如下所示。

{"error":"invalid_grant","error_description":"The provided value for the 'redirect_uri' is not
valid. The value must exactly match the redirect URI used to obtain the authorization code."}

请求用户同意时,还可以在浏览器窗口中以文本的形式返回无效的重定向 URI 错误,如下所示。

invalid_request:输入参数“redirect_uri”提供的值无效。 预期值为与为此客户端应用程序注册的重定向 URI 匹配的 URI。

如果观察到此错误,则重定向 URI 未正确 注册,或者应用程序未使用已注册的重定向 URI。

无效的授予

如果尝试使用用户不同意的范围刷新令牌,则可能会返回 invalid_grant 错误。

{
    "error":"invalid_grant",
    "error_description":"AADSTS70000: The request was denied because one or more scopes requested are unauthorized or expired. The user must first sign in and grant the client application access to the requested scope."
}

如果重定向 URI 无效、刷新令牌过期、用户更改了密码或令牌被撤销,则也可能返回invalid_grant错误。

{"error":"invalid_grant","error_description":"The user could not be authenticated or the grant is expired. The user must first sign in and if needed grant the client application access to the requested scope."}

在没有任何事先警告的情况下,Microsoft可以确定应再次授予用户同意;但是,某些方案由你控制。 在跨区域和设备(如 azure Microsoft)上运行应用的客户端应向客户端密码 注册 Web 应用程序。 只要具有相同的客户端 ID 和客户端密码,就可以在一台设备上获取刷新令牌,然后在另一台设备上刷新它。 如果在未使用客户端密码的情况下注册公共应用程序,则不能跨设备使用刷新令牌。 机密令牌绑定到客户端密码。 如果你使用没有客户端密码的公共客户端应用程序 ID 在美国获取刷新令牌,然后尝试刷新欧盟区域中的令牌,则会看到invalid_grant错误。

找不到应用程序或未经授权的客户端

如果观察到错误,例如“unauthorized_client:客户端不存在”或“在目录'bar'中找不到标识符为'foo'的应用程序”,请确保应用程序仍然存在于正确的目标环境(即生产环境或沙盒)。

如果使用短十六进制格式的Live SDK应用程序 ID(例如 0000000012345A67)调用Microsoft 标识平台终结点,可能会返回应用程序“找不到”错误。 在这种情况下,必须 注册 一个新应用程序。 有效的Microsoft 标识平台应用程序 ID 的格式设置为带短划线的 GUID,例如 00001111-aaaa-2222-bbbb-3333cccc4444。 

如果在Azure 门户中注册了应用,请确保在“支持的帐户类型”部分选择“任何组织目录和个人Microsoft帐户中的帐户”。 (请参阅注册应用程序) 如果在初始设置过程中未选择此选项,Azure 门户可能需要注册新应用程序。

应用程序未配置为多租户应用程序

如果已注册的应用程序仅限于特定租户,可能会看到以下错误。

Application 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx' is not configured as a multi-tenant application. Usage of the /common endpoint is not supported for such applications created after '10/15/2018'. Use a tenant-specific endpoint or configure the application to be multi-tenant.

如果在Azure 门户中注册了应用,请确保在“支持的帐户类型”部分选择“任何组织目录和个人Microsoft帐户中的帐户”。 (请参阅注册应用程序) 如果在初始设置过程中未选择此选项,Azure 门户可能需要注册新应用程序。

联系支持人员

Microsoft Q&A 论坛可供开发人员社区提问和回答有关Bing Ads API 和Microsoft广告脚本的问题。 Microsoft监视论坛,并回复社区尚未回答的问题。

重要

为了确保我们可以看到你的问题,请使用“advertising-api”标记它。

如果调查涉及敏感帐户或个人详细信息,或者如果您没有找到通过 Microsoft Q&A 解决问题所需的信息,请联系 Microsoft广告支持

提示

若要加快调查速度,请提供支持详细信息,例如开发环境、错误频率以及重现错误的步骤。

有关调用 Bing Ads API 服务的帮助,请逐步完成此清单,并向 支持团队提供结果。

  • 谁是尝试调用服务的用户,例如,登录电子邮件地址是什么?
  • 用户尝试访问的帐户 ID 或帐号是什么?
  • 重现错误需要执行哪些步骤? 包括完整的请求、响应和时间戳,专用凭据除外,例如访问令牌。
  • 你的目标是生产环境还是沙盒环境? 确保为生产与沙盒使用正确的应用注册和授权终结点。 同样,请确保为同一环境使用正确的 Web 服务地址
  • 指示同一请求过去是否适合你,即历史性能。
  • 指示你现在可以每次还是间歇性地重现问题。
  • 对于与批量或报告服务相关的问题,请包括请求和状态轮询操作的跟踪。
  • 对于与错误代码 105 或 106 相关的身份验证问题,请同时包含 Microsoft Advertising 用户的登录凭据的系统标识符。 若要获取当前用户的用户标识符,请参阅 快速入门 指南。

有关获取使用 OAuth 进行身份验证的访问和刷新令牌的帮助,请逐步完成此清单并向 支持团队提供结果。

  • 尝试进行身份验证的用户是谁,例如,登录电子邮件地址是什么?
  • 用户尝试访问的帐户 ID 或帐号是什么?
  • 重现错误需要执行哪些步骤? 包括完整的请求、响应和时间戳,专用凭据除外,例如访问令牌和客户端密码。
  • 你的目标是生产环境还是沙盒环境? 确保为生产与沙盒使用正确的应用注册和授权终结点。 同样,请确保为同一环境使用正确的 Web 服务地址
  • 是否已 注册 本机或 Web 应用程序? 在跨区域和设备(如 Microsoft Azure)的服务上运行应用的客户端应向客户端密码注册 Web 应用程序。
  • 注册的应用程序 ID (client_id) 是什么? 如果还有应用程序机密 (client_secret) 请在从授权终结点请求访问令牌时确认正在设置它,但不要与任何人共享它。
  • 运行 OAuth 诊断运行状况检查。 能否成功获取访问令牌并完成生产或沙盒 快速入门 指南? 如果没有,身份验证在哪里失败,错误是什么?

故障模型概述

当Bing Ads API 服务操作失败时,它将返回服务错误,例如,客户管理服务可以返回 ApiFault。 错误异常包括一个或多个错误对象。 error 对象包含服务操作失败原因的详细信息以及唯一标识错误的代码。 有关错误代码的列表,请参阅 Bing Ads API 操作错误代码

可用的故障和数据对象因服务而异。 此表介绍了每个服务的故障模型和指向错误数据对象的链接。

服务 说明
Ad Insight 所有广告见解操作都可能会引发 AdApiFaultDetailApiFaultDetail
批量邮件 所有批量操作都可能会引发 AdApiFaultDetailApiFaultDetail
市场活动管理 所有市场活动管理操作都可能会引发 AdApiFaultDetail

某些市场活动管理操作还可能会引发 ApiFaultDetailEditorialApiFaultDetail

有关详细信息,请参阅 市场活动管理数据对象
客户计费 所有客户计费操作都可能会引发 AdApiFaultDetailApiFault

某些客户计费操作也可能引发 ApiBatchFault
客户管理 所有客户管理操作都可能会引发 AdApiFaultDetailApiFault
Reporting 所有报告操作都可能会引发 AdApiFaultDetailApiFaultDetail

注意

所有故障对象都派生自 ApplicationFault 对象。 ApplicationFault 对象定义 TrackingId 元素,该元素唯一标识包含 API 调用详细信息的日志条目。 如果需要 联系支持人员,请在调用服务操作时提供跟踪 ID 和日期和时间。

部分成功

部分成功意味着,在一个或多个批处理中添加、更新或删除实体时,某些操作可能会成功,但部分批处理可能会失败。

批量服务的部分成功

批量文件中上传记录时,某些记录的上传可能会成功,而批处理中其他记录的上传可能会失败。 调用 GetBulkUploadUrl 时,可以选择是否在上传结果文件中接收错误。

注意

Microsoft广告不支持“全部或全部”错误处理行为。 必须在客户端处理该操作。

市场活动管理服务的部分成功

对于大多数实体,调用 市场活动管理服务 操作时支持部分成功。 对于未添加实体的每个列表索引,相应的元素将为 null。 PartialErrors 元素表示 BatchError 对象的数组,这些对象包含未成功添加、更新或删除的任何实体的详细信息。 该列表仅包含一个 BatchError ,用于不成功的尝试,并且不包含每个成功添加实体的索引处的 null 元素。 同样,某些操作将 NestedPartialErrors 作为 BatchErrorCollection 的列表或二维 BatchError 返回。

注意

ApplyProductPartitionActions 操作在响应中包含 PartialErrors;但是,不支持部分成功。 请求的整个操作集成功, AdGroupCriterionIds 响应列表已完全填充,或者所有这些操作都失败, 并且 PartialErrors 响应列表已完全填充。

.NET 异常

如果使用 Bing Ads .NET SDK,应用程序应准备好处理Bing Ads API 服务级别异常WCF 异常Bing Ads所述的 .NET SDK 异常。

有关 .NET 应用程序故障排除,请参阅 .NET SDK 故障排除

WCF 异常

可能还会引发非特定于 Bing Ads API 的泛型 SOAP 错误,应用程序应捕获这些错误。 例如,.NET 应用程序可能会引发 Windows Communication Foundation (WCF) 异常,例如 Exception、TimeoutException 和 CommunicationException。 有关预期来自 WCF 的异常的信息,请参阅 预期异常

不应在 finally 块中调用 Close 方法来释放服务对象。 反对的是 Close 方法可能会引发异常。 如果 Close 引发异常,则必须调用 Abort 方法以确保释放所有资源;否则,可能会泄漏服务器上的资源。 建议的做法是在 try 块中调用 Close ,并从捕获的异常中调用 Abort

出于同样的原因,不建议使用 using 语句。 有关详细信息,请参阅 避免 Using 语句的问题

.NET SDK 异常

Bing Ads .NET SDK 异常抽象出一些服务级别异常。 若要解决大多数异常,可以重试,如果问题在多次重试后仍然存在,请随时联系支持人员。

异常 命名空间 说明
CouldNotDownloadResultFileException Microsoft.BingAds 尝试下载批量或报告结果文件失败后,内部 SDK HttpService 会引发此异常。
CouldNotUploadFileException Microsoft.BingAds 尝试上传批量文件失败后,内部 SDK HttpService 会引发此异常。
OAuthTokenRequestException Microsoft.BingAds 如果从 Microsft 帐户授权服务器返回错误,则会引发此异常。 若要解决此异常,可以先检查堆栈跟踪以查看错误详细信息,以防可以采取某种操作来解决问题。 例如,你可能指定了无效的客户端 ID。
BulkOperationCouldNotBeCompletedException Microsoft.BingAds.V13.Bulk 如果尝试轮询已完成的批量结果文件,并且批量服务返回失败状态,则会引发此异常。
BulkOperationInProgressException Microsoft.BingAds.V13.Bulk 如果尝试下载尚不可用的批量结果文件,则会引发此异常。
CouldNotGetBulkOperationStatusException Microsoft.BingAds.V13.Bulk 如果 BulkServiceManager 在多次重试后无法获取上传或下载操作状态,则会引发此异常。
CouldNotSubmitBulkDownloadException Microsoft.BingAds.V13.Bulk 当它调用的 DownloadCampaignsByAccountIds 服务操作未返回有效响应时,BulkServiceManager 将引发此异常。
CouldNotSubmitBulkUploadException Microsoft.BingAds.V13.Bulk 当 BulkServiceManager 调用的 GetBulkUploadUrl 服务操作未返回有效响应时,将引发此异常。
EntityReadException Microsoft.BingAds.V13.Bulk 尝试使用 BulkFileReader 从大容量文件读取实体时会引发此异常。 若要解决此异常,可以先检查堆栈跟踪以查看错误详细信息,以防可以采取某种操作来解决问题。 例如,要从中读取的大容量文件可能在其中一个字段中具有无效值。
EntityWriteException Microsoft.BingAds.V13.Bulk 尝试使用 BulkFileWriter 将实体写入大容量文件时,会引发此异常。 若要解决此异常,可以先检查堆栈跟踪以查看错误详细信息,以防可以采取某种操作来解决问题。 例如,你可能为其中一个上传实体指定了无效值。
CouldNotGetReportingDownloadStatusException Microsoft.BingAds.V13.Reporting 如果 ReportingServiceManager 在多次重试后未能获取下载操作状态,则会引发此异常。
CouldNotSubmitReportingDownloadException Microsoft.BingAds.V13.Reporting 当 ReportingServiceManager 调用的 SubmitGenerateReport 服务操作未返回有效响应时,ReportingServiceManager 将引发此异常。
ReportingOperationCouldNotBeCompletedException Microsoft.BingAds.V13.Reporting 如果尝试轮询已完成的报告结果文件,并且报告服务返回失败状态,则会引发此异常。
ReportingOperationInProgressException Microsoft.BingAds.V13.Reporting 如果尝试下载尚不可用的报告结果文件,则会引发此异常。

.NET SDK 故障排除

除非存在 已知的服务问题,否则当调用失败时,通常是因为 SOAP 元素无效、无序或你指定了错误的凭据。 若要验证这两种情况,应捕获请求 SOAP 信封。 可以 联系支持人员 ,或者将捕获与每个服务操作记录的相应 SOAP 示例进行比较。

SDK 跟踪

可以使用 Bing Ads .NET SDK TraceBehavior 来记录 SOAP 请求和响应。

注意

TraceBehavior 随 Bing Ads .NET SDK 版本 12.13.5 及更高版本提供。

using (StreamWriter streamWriter = new StreamWriter(@"tracelog.txt"))
{
    streamWriter.AutoFlush = true;

    // For console output instead of file output, use new TextWriterTraceListener(Console.Out).
    // If you only need debug output, you can remove the StreamWriter, TraceListener, and AddTraceSource.
    TraceListener traceListener = new TextWriterTraceListener(streamWriter.BaseStream);

    IServiceCollection serviceCollection = new ServiceCollection();
    serviceCollection.AddLogging(builder => builder
        .AddTraceSource(new SourceSwitch("ProgramSourceSwitch", "verbose"), traceListener)
        .AddDebug()
        .AddFilter(level => level >= LogLevel.Debug)
    );
    var iLoggerFactory = serviceCollection.BuildServiceProvider().GetService<ILoggerFactory>();
    TraceBehavior.Instance.AddMessageInspector(
        new LogMessageInspector(
            iLoggerFactory.CreateLogger<Program>(),
            LogLevel.Information)
    );

    Authentication authentication = AuthenticateWithOAuth();

    // This utiltiy operation sets the global authorization data instance 
    // to the first account that the current authenticated user can access. 

    SetAuthorizationDataAsync(authentication).Wait();

    // Run all of the examples that are included above.

    foreach (var example in _examples)
    {
        example.RunAsync(_authorizationData).Wait();
    }

    streamWriter.Flush();
    traceListener.Flush();
}

可在 Program.cs 中找到使用上述代码片段的完整程序。

Fiddler 选项

可以按照以下步骤使用第三方工具(如 Fiddler)从 .NET 应用程序捕获 SOAP 信封。

  • 安装 Fiddler 后,从根证书存储导出 Fiddler 证书。
  • 单击“ 工具>”“Fiddler 选项”。
  • 选择“HTTPS”选项卡,然后单击“解密 HTTPS 流量检查”框。
  • 单击“ 确定”,然后按照提示导出 Fiddler 证书。

Java 异常

如果使用 Bing Ads Java SDK,应用程序应准备好处理Bing Ads API 服务级别异常 ,并Bing Ads下面所述的 Java SDK 异常。

有关 Java 应用程序故障排除,请参阅 Java SDK 故障排除

Java SDK 异常

Bing Ads Java SDK 异常抽象出一些服务级别异常。 若要解决大多数异常,可以重试,如果问题在多次重试后仍然存在,请随时联系支持人员。

异常 命名空间 说明
CouldNotDownloadResultFileException com.microsoft.bingads 尝试下载批量或报告结果文件失败后,内部 SDK HttpService 会引发此异常。
CouldNotUploadFileException com.microsoft.bingads 尝试上传批量文件失败后,内部 SDK HttpService 会引发此异常。
OAuthTokenRequestException com.microsoft.bingads 如果从 Microsft 帐户授权服务器返回错误,则会引发此异常。 若要解决此异常,可以先检查堆栈跟踪以查看错误详细信息,以防可以采取某种操作来解决问题。 例如,你可能指定了无效的客户端 ID。
BulkDownloadCouldNotBeCompletedException com.microsoft.bingads.V13.bulk 如果尝试轮询已完成的批量下载结果文件,并且批量服务返回失败状态,则会引发此异常。
BulkOperationInProgressException com.microsoft.bingads.V13.bulk 如果尝试下载尚不可用的批量结果文件,则会引发此异常。
BulkUploadCouldNotBeCompletedException com.microsoft.bingads.V13.bulk 如果尝试轮询已完成的批量上传结果文件,并且批量服务返回失败状态,则会引发此异常。
CouldNotGetBulkOperationStatusException com.microsoft.bingads.V13.bulk 如果 BulkServiceManager 在多次重试后无法获取上传或下载操作状态,则会引发此异常。
CouldNotSubmitBulkDownloadException com.microsoft.bingads.V13.bulk 当它调用的 DownloadCampaignsByAccountIds 服务操作未返回有效响应时,BulkServiceManager 将引发此异常。
CouldNotSubmitBulkUploadException com.microsoft.bingads.V13.bulk 当 BulkServiceManager 调用的 GetBulkUploadUrl 服务操作未返回有效响应时,将引发此异常。
EntityReadException com.microsoft.bingads.V13.bulk 尝试使用 BulkFileReader 从大容量文件读取实体时会引发此异常。 若要解决此异常,可以先检查堆栈跟踪以查看错误详细信息,以防可以采取某种操作来解决问题。 例如,要从中读取的大容量文件可能在其中一个字段中具有无效值。
EntityWriteException com.microsoft.bingads.V13.bulk 尝试使用 BulkFileWriter 将实体写入大容量文件时,会引发此异常。 若要解决此异常,可以先检查堆栈跟踪以查看错误详细信息,以防可以采取某种操作来解决问题。 例如,你可能为其中一个上传实体指定了无效值。
CouldNotGetReportingDownloadStatusException com.microsoft.bingads.V13.reporting 如果 ReportingServiceManager 在多次重试后未能获取下载操作状态,则会引发此异常。
CouldNotSubmitReportingDownloadException com.microsoft.bingads.V13.reporting 当 ReportingServiceManager 调用的 SubmitGenerateReport 服务操作未返回有效响应时,ReportingServiceManager 将引发此异常。
ReportingOperationCouldNotBeCompletedException com.microsoft.bingads.V13.reporting 如果尝试轮询已完成的报告结果文件,并且报告服务返回失败状态,则会引发此异常。
ReportingOperationInProgressException com.microsoft.bingads.V13.reporting 如果尝试下载尚不可用的报告结果文件,则会引发此异常。

Java SDK 故障排除

除非存在 已知的服务问题,否则当调用失败时,通常是因为 SOAP 元素无效、无序或你指定了错误的凭据。 若要在任何情况下进行验证,应捕获请求 SOAP 信封。 可以 联系支持人员 ,或者将捕获与每个服务操作记录的相应 SOAP 示例进行比较。

若要启用请求和响应消息的编程日志记录,请参阅 日志记录服务调用

Fiddler 选项

可以按照以下步骤使用 Fiddler 等第三方工具从 Java 应用程序捕获 SOAP 信封。

  1. 安装 Fiddler 后,从根证书存储导出 Fiddler 证书。 单击“ 工具>”“Fiddler 选项”。 选择“HTTPS”选项卡,然后单击“解密 HTTPS 流量检查”框。 单击“ 确定”,然后按照提示导出 Fiddler 证书。

  2. 使用以下命令将证书导入 Java 使用的 cacert 存储中,例如,以管理员身份从 PowerShell 执行。

    PS C:\Program Files\Java\jre1.8.0_201\bin> .\keytool.exe -importcert -v -alias "Fiddler cert" -trustcacerts -keystore "C:\Program Files\Java\jre1.8.0_201\lib\security\cacerts" -storepass changeit -file <PathToFiddlerRootGoesHere>\FiddlerRoot.cer
    
  3. 将以下行添加到 Java 应用程序。

    System.setProperty("https.proxyHost", "127.0.0.1");
    System.setProperty("https.proxyPort", "8888");
    

PHP 异常

如果使用 Bing Ads PHP SDK,应用程序应准备好处理Bing Ads API 服务级别异常 ,并Bing Ads下面所述的 PHP SDK 异常。

有关 PHP 应用程序疑难解答,请参阅 PHP SDK 故障排除

PHP SDK 故障排除

除非存在 已知的服务问题,否则当调用失败时,通常是因为 SOAP 元素无效、无序或你指定了错误的凭据。 若要验证这两种情况,应捕获请求 SOAP 信封。 可以 联系支持人员 ,或者将捕获与每个服务操作记录的相应 SOAP 示例进行比较。

打印 SOAP

在 PHP 中,可以使用以下方法来打印 SOAP 信封。 每个 PHP 代码示例都包含这些语句,用于将错误输出到控制台。

print $proxy->GetService()->__getLastRequest()."\n";
print $proxy->GetService()->__getLastResponse()."\n";

PHP SDK 异常

Bing Ads PHP SDK 异常抽象出一些服务级别异常。 若要解决大多数异常,可以重试,如果问题在多次重试后仍然存在,请随时联系支持人员。

还应处理 OAuthTokenRequestException,如果从 Microsft 帐户授权服务器返回错误,则会引发该错误。 若要解决此异常,可以先检查堆栈跟踪以查看错误详细信息,以防可以采取某种操作来解决问题。 例如,你可能指定了无效的客户端 ID。

Python 异常

如果使用 Bing Ads Python SDK,应用程序应准备好处理Bing Ads API 服务级别异常 ,并Bing Ads下面所述的 Python SDK 异常。

有关 Python 应用程序故障排除,请参阅 Python SDK 故障排除

Python SDK 异常

Bing Ads Python SDK 异常抽象出一些服务级别异常。 若要解决大多数异常,可以重试,如果问题在多次重试后仍然存在,请随时联系支持人员。

异常 命名空间 说明
BulkException BingAds.V13.Bulk 如果尝试轮询已完成的批量结果文件,并且批量服务返回失败状态,则会引发此异常。
BulkDownloadException BingAds.V13.Bulk 如果在尝试下载批量文件时发生超时,则会引发此异常。
BulkUploadException BingAds.V13.Bulk 如果在尝试下载批量上传结果文件时发生超时,则会引发此异常。
EntityReadException BingAds.V13.Bulk 尝试使用 BulkFileReader 从大容量文件读取实体时会引发此异常。 若要解决此异常,可以先检查堆栈跟踪以查看错误详细信息,以防可以采取某种操作来解决问题。 例如,要从中读取的大容量文件可能在其中一个字段中具有无效值。
EntityWriteException BingAds.V13.Bulk 尝试使用 BulkFileWriter 将实体写入大容量文件时,会引发此异常。 若要解决此异常,可以先检查堆栈跟踪以查看错误详细信息,以防可以采取某种操作来解决问题。 例如,你可能为其中一个上传实体指定了无效值。
FileDownloadException BingAds 如果在尝试下载批量上传结果文件时发生超时,则会引发此异常。
FileUploadException BingAds 如果在尝试上传批量文件时发生超时,则会引发此异常。
OAuthTokenRequestException BingAds 如果从 Microsft 帐户授权服务器返回错误,则会引发此异常。 若要解决此异常,可以先检查堆栈跟踪以查看错误详细信息,以防可以采取某种操作来解决问题。 例如,你可能指定了无效的客户端 ID。
ReportingException BingAds.V13.Reporting 如果尝试轮询已完成的报告结果文件,并且报告服务返回失败状态,则会引发此异常。
ReportingDownloadException BingAds.V13.Reporting 如果在尝试下载报告结果文件时发生超时,则会引发此异常。
SdkException BingAds Bing Ads Python SDK 的基异常类。 永远不会引发此异常。
TimeoutException BingAds 如果发生超时,则会引发此异常。

Python SDK 故障排除

除非存在 已知的服务问题,否则当调用失败时,通常是因为 SOAP 元素无效、无序或你指定了错误的凭据。 若要验证这两种情况,应捕获请求 SOAP 信封。 可以 联系支持人员 ,或者将捕获与每个服务操作记录的相应 SOAP 示例进行比较。

日志记录

如果使用 Bing Ads Python SDK,则可以包括日志记录以输出流量,例如 SOAP 请求和响应。 每个 Python 代码示例都包含这些语句,用于将输出到控制台的所有 SOAP 流量。 如果要查看流量,请务必取消注释它们。

import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
logging.getLogger('suds.transport.http').setLevel(logging.DEBUG) 

另请参阅

Bing Ads API 操作错误代码
Bing Ads API Web 服务地址