Gestion des erreurs et des exceptions de service

Cet article décrit des détails sur la gestion des erreurs et la résolution des problèmes de votre application.

Conseil

Lorsque vous créez un message de demande SOAP, assurez-vous que les éléments sont dans le même ordre que celui défini dans le langage de description des services web (WSDL). Si les éléments requis sont dans le désordre, l’appel échoue. Si les éléments facultatifs sont dans le désordre, l’appel peut échouer ou les éléments sont ignorés. Pour plus d’informations, consultez Ordre des éléments XML SOAP.

Erreurs courantes de l’API

Voici quelques conseils pour gérer les erreurs de service courantes que vous pouvez rencontrer. Pour obtenir la liste complète des codes d’erreur de l’API Bing Ads, consultez Codes d’erreur d’opération.

Code 105

Indique généralement l’utilisation d’un jeton d’accès incorrect (élément d’en-tête AuthenticationToken) ou d’un jeton de développeur pour l’environnement cible. Par exemple, vos informations d’identification peuvent être valides en production ; Toutefois, lorsque vous ciblez le bac à sable, vous observez le code 105.

Code 106

Indique généralement que même si les informations d’identification sont correctes pour l’environnement cible, l’utilisateur n’a pas accès à l’une des entités spécifiées dans la requête. Par exemple, vous pouvez observer cette erreur lors de l’appel de SubmitGenerateReportRequest si l’utilisateur ne dispose pas des autorisations sur le compte spécifié.

Code 117

Si vous dépassez la limite des appels de service, l’erreur suivante s’affiche :

  • Code d’erreur numérique : 117
  • Code d’erreur symbolique : CallRateExceeded
  • Message : Vous avez dépassé le nombre d’appels que vous êtes autorisé à effectuer en une minute. Veuillez réduire le nombre d’appels que vous effectuez par minute.

Lorsque vous observez cette erreur, vous pouvez soumettre à nouveau la requête sous la limite après 60 secondes d’attente.

Erreur interne

Parfois, le service peut retourner une erreur interne comme suit :

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

Voici quelques scénarios d’erreur interne possibles :

  • Il s’agit d’un problème système temporaire et vous ne pouvez rien faire. Si le même appel a déjà fonctionné pour vous, réessayez plus tard au cas où nous aurions résolu le problème côté serveur.
  • L’opération n’a pas été correctement mappée à un code d’erreur actionnable. Dans l’idéal, si les clients peuvent faire quelque chose pour résoudre le problème, l’API Bing Ads doit retourner un code d’erreur actionnable. Si vous observez systématiquement l’erreur interne, contactez le support avec les détails.

HTTP 500

Toutes les opérations du service API Bing Ads respectent la spécification SOAP (Simple Object Access Protocol) 1.1, dans laquelle les erreurs sont retournées avec un code HTTP 500. Par exemple, consultez les rubriques suivantes.

HTTP/1.1 500 Internal Server Error

Ce n’est pas en soi représentatif d’un code actionnable, et vous devez inspecter les détails de l’erreur pour plus d’informations sur l’erreur spécifique.

Impossible de créer une classe abstraite

Vous ne pouvez pas créer une instance d’une classe de base telle qu’Ad. Vous devez instancier l’une des classes dérivées, par exemple ExpandedTextAd.

Pourquoi est-ce que je reçois une URL vide à partir de l’appel de l’API de création de rapports ?

Même si l’état du rapport est défini sur Réussite, l’élément ReportDownloadUrl peut être nul si aucune donnée n’est disponible pour les paramètres de rapport soumis. Si vous voyez des données de performances dans l’application web Microsoft Advertising pour la même plage de dates et les mêmes critères de filtre, contactez le support technique avec plus de détails.

Erreurs OAuth courantes

Voici quelques conseils pour gérer les erreurs d’autorisation courantes que vous pouvez rencontrer.

Erreurs AADSTS

Les codes d’erreur et messages AADSTS sont susceptibles d’être modifiés. Pour obtenir les informations les plus actuelles, consultez la https://login.microsoftonline.com/error page pour trouver des descriptions d’erreurs AADSTS, des correctifs et des solutions de contournement suggérées.

Recherchez sur la partie numérique du code d’erreur retourné. Par exemple, si vous avez reçu le code d’erreur « AADSTS650052 », recherchez https://login.microsoftonline.com/error « 650052 ». Vous pouvez également lier directement à une erreur spécifique en ajoutant le numéro de code d’erreur à l’URL : https://login.microsoftonline.com/error?code=650052.

Certaines des erreurs AADSTS les plus courantes, par exemple, AADSTS50011, AADSTS650052 et AADSTS700016 sont décrites plus en détail ci-dessous.

AADSTS50011

L’erreur AADSTS50011 peut être retournée dans une chaîne JSON lors de la demande de jetons d’accès avec le point de terminaison Plateforme d'identités Microsoft comme suit.

{"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"}

Une erreur d’URI de redirection non valide peut également être retournée sous forme de texte dans la fenêtre du navigateur lorsque vous demandez le consentement de l’utilisateur comme suit.

invalid_request : la valeur fournie pour le paramètre d’entrée « redirect_uri » n’est pas valide. La valeur attendue est un URI qui correspond à un URI de redirection inscrit pour cette application cliente.

Si vous observez cette erreur, votre URI de redirection n’est pas correctement inscrit ou votre application n’utilise pas l’URI de redirection inscrit.

AADSTS650052

Le code d’erreur 650052 peut être retourné avec le message « L’application a besoin d’accéder à un service («https://ads.microsoft.com" ;) que votre organization « {organization} » n’est pas abonné ou activé. »

Si vous observez cette erreur, vérifiez qu’au moins un des utilisateurs administrateurs de votre locataire Azure AAD a été ajouté et activé pour les comptes professionnels dans l’application web Microsoft Advertising. Contactez le support technique pour obtenir de l’aide.

AADSTS700016

Le code d’erreur 700016 peut être retourné avec le message « L’application avec l’identificateur « {appIdentifier} » est introuvable dans le répertoire « {tenantName} ».

Si vous avez un ID d’application plus ancien (alias ID client) au format hexadécimal, par exemple 0000000012345A67, vous devez inscrire une nouvelle application. Les ID d’application valides à utiliser avec le Plateforme d'identités Microsoft sont mis en forme en tant que GUID avec des tirets, par exemple ab01c23d-4e56-7f8a-90bc-1d23efabc45d. Si vous ne voyez pas d’application existante dans le Portail Azure - inscriptions d'applications, cela indique une autre indication que vous devez la remplacer par une nouvelle application.

URI de redirection non valide

Une erreur d’URI de redirection non valide peut être retournée dans une chaîne JSON lors de la demande de jetons d’accès avec le point de terminaison Live Connect comme suit.

{"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."}

Une erreur d’URI de redirection non valide peut également être retournée sous forme de texte dans la fenêtre du navigateur lorsque vous demandez le consentement de l’utilisateur comme suit.

invalid_request : la valeur fournie pour le paramètre d’entrée « redirect_uri » n’est pas valide. La valeur attendue est un URI qui correspond à un URI de redirection inscrit pour cette application cliente.

Si vous observez cette erreur, votre URI de redirection n’est pas correctement inscrit ou votre application n’utilise pas l’URI de redirection inscrit.

Octroi non valide

Une erreur invalid_grant peut être retournée si vous tentez d’actualiser le jeton à l’aide d’une étendue que l’utilisateur ne consent pas.

{
    "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."
}

Une erreur de invalid_grant peut également être retournée si l’URI de redirection n’est pas valide, si le jeton d’actualisation a expiré, si l’utilisateur a modifié son mot de passe ou si le jeton a été révoqué.

{"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."}

À tout moment, sans avertissement préalable, Microsoft peut déterminer que le consentement de l’utilisateur doit à nouveau être accordé ; Toutefois, certains scénarios sont sous votre contrôle. Les clients exécutant des applications sur des services qui couvrent des régions et des appareils tels que Microsoft Azure doivent inscrire une application web avec une clé secrète client. Vous pouvez obtenir un jeton d’actualisation sur un appareil et l’actualiser sur un autre, à condition que vous ayez le même ID client et la même clé secrète client. Si vous inscrivez une application publique sans clé secrète client, vous ne pouvez pas utiliser de jeton d’actualisation sur plusieurs appareils. Un jeton confidentiel est lié à la clé secrète client. Si vous avez utilisé un ID d’application cliente publique sans clé secrète client pour obtenir un jeton d’actualisation aux États-Unis, puis essayez ultérieurement d’actualiser le jeton dans la région de l’UE, vous observez l’erreur invalid_grant.

Application introuvable ou client non autorisé

Si vous observez une erreur telle que « unauthorized_client : Le client n’existe pas » ou « L’application avec l’identificateur 'foo' est introuvable dans le répertoire 'bar' », vérifiez que l’application existe toujours pour l’environnement cible correct, par exemple, la production ou le bac à sable.

Une erreur d’application introuvable peut être retournée si vous appelez le point de terminaison Plateforme d'identités Microsoft à l’aide d’un ID d’application Kit de développement logiciel (SDK) Live au format hexadécimal court, par exemple 0000000012345A67. Dans ce cas, vous devez inscrire une nouvelle application. Les ID d’application Plateforme d'identités Microsoft valides sont mis en forme en tant que GUID avec des tirets, par exemple ab01c23d-4e56-7f8a-90bc-1d23efabc45d. 

Si vous avez inscrit l’application dans le Portail Azure, dans la section Types de comptes pris en charge, vérifiez que vous avez sélectionné Comptes dans n’importe quel annuaire organisationnel et comptes Microsoft personnels. (Consultez Inscrire une application) Si vous n’avez pas choisi cette option lors de l’installation initiale, le Portail Azure peut nécessiter l’inscription d’une nouvelle application.

Application non configurée en tant qu’application mutualisée

Vous pouvez observer l’erreur suivante si votre application inscrite est limitée à un locataire spécifique.

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.

Si vous avez inscrit l’application dans le Portail Azure, dans la section Types de comptes pris en charge, vérifiez que vous avez sélectionné Comptes dans n’importe quel annuaire organisationnel et comptes Microsoft personnels. (Consultez Inscrire une application) Si vous n’avez pas choisi cette option lors de l’installation initiale, le Portail Azure peut nécessiter l’inscription d’une nouvelle application.

Contacter le support

Le forum Microsoft Q&A est accessible à la communauté des développeurs pour poser des questions et y répondre sur les API Bing Ads et les scripts Microsoft Advertising. Microsoft surveille les forums et répond aux questions auxquelles la communauté n’a pas encore répondu.

Importante

Pour vous assurer que nous voyons votre question, étiquetez-la avec « advertising-api ».

Si l’enquête implique des informations personnelles ou de compte sensibles, ou si vous ne trouvez pas les informations dont vous avez besoin pour résoudre votre problème via Microsoft Q&R, contactez le support Microsoft Advertising.

Conseil

Pour accélérer l’examen, fournissez un support avec des détails tels que l’environnement de développement, la fréquence des erreurs et les étapes à suivre pour reproduire l’erreur.

Pour obtenir de l’aide sur les appels aux services d’API Bing Ads, parcourez cette liste de contrôle et fournissez les résultats à l’équipe du support technique.

  • Qui est l’utilisateur qui tente d’appeler le service, par exemple, quelle est l’adresse e-mail de connexion ?
  • Quel est l’ID de compte ou le numéro de compte auquel l’utilisateur tente d’accéder ?
  • Quelles sont les étapes nécessaires pour reproduire l’erreur ? Incluez la demande complète, la réponse et l’horodatage, à l’exception des informations d’identification privées, par exemple, le jeton d’accès.
  • Ciblez-vous l’environnement de production ou de bac à sable ? Vérifiez que vous utilisez les points de terminaison d’inscription et d’autorisation d’application appropriés pour la production et le bac à sable. De même, veillez à utiliser les adresses de service web correctes pour le même environnement.
  • Indiquez si la même demande a fonctionné pour vous dans le passé, c’est-à-dire les performances historiques.
  • Indiquez si vous pouvez maintenant reproduire le problème à chaque fois ou par intermittence.
  • Pour les problèmes liés au service de création de rapports ou en bloc, incluez la trace pour les opérations de requête et de status d’interrogation.
  • Pour un problème d’authentification lié au code d’erreur 105 ou 106, incluez également l’identificateur système pour les informations d’identification de connexion de l’utilisateur Microsoft Advertising. Pour obtenir l’identificateur de l’utilisateur actuel, consultez le guide de démarrage rapide .

Pour obtenir de l’aide pour obtenir des jetons d’accès et d’actualisation pour l’authentification avec OAuth, parcourez cette liste de vérification et fournissez les résultats à l’équipe du support technique.

  • Qui est l’utilisateur qui tente de s’authentifier, par exemple, quelle est l’adresse e-mail de connexion ?
  • Quel est l’ID de compte ou le numéro de compte auquel l’utilisateur tente d’accéder ?
  • Quelles sont les étapes nécessaires pour reproduire l’erreur ? Incluez la demande complète, la réponse et l’horodatage, à l’exception des informations d’identification privées, par exemple, le jeton d’accès et la clé secrète client.
  • Ciblez-vous l’environnement de production ou de bac à sable ? Vérifiez que vous utilisez les points de terminaison d’inscription et d’autorisation d’application appropriés pour la production et le bac à sable. De même, veillez à utiliser les adresses de service web correctes pour le même environnement.
  • Avez-vous inscrit une application native ou web ? Les clients exécutant des applications sur des services qui couvrent des régions et des appareils tels que Microsoft Azure doivent inscrire une application web avec une clé secrète client.
  • Quel est votre ID d’application inscrit (client_id) ? Si vous avez également un secret d’application (client_secret), vérifiez que vous le définissez lorsque vous demandez des jetons d’accès à partir du point de terminaison d’autorisation, mais ne le partagez avec personne.
  • Exécutez un case activée d’intégrité de diagnostic OAuth. Pouvez-vous obtenir un jeton d’accès et suivre le guide de démarrage rapide pour la production ou le bac à sable ? Si ce n’est pas le cas, où l’authentification échoue-t-elle et quelle est l’erreur ?

Vue d’ensemble du modèle d’erreur

Lorsqu’une opération de service d’API Bing Ads échoue, elle retourne une erreur de service, par exemple, le service Gestion des clients peut retourner ApiFault. Les exceptions d’erreur incluent un ou plusieurs objets d’erreur. Les objets d’erreur contiennent les détails de l’échec de l’opération de service et un code qui identifie l’erreur de manière unique. Pour obtenir la liste des codes d’erreur, consultez Codes d’erreur d’opération de l’API Bing Ads.

Les objets de données et d’erreur disponibles varient selon le service. Ce tableau décrit le modèle d’erreur et établit des liens vers des objets de données d’erreur pour chaque service.

Service Description
Insights d’annonces Toutes les opérations d’insights publicitaires peuvent lever AdApiFaultDetail et ApiFaultDetail.
Courrier en nombre Toutes les opérations en bloc peuvent lever AdApiFaultDetail et ApiFaultDetail.
Gestion des campagnes Toutes les opérations de gestion de campagne peuvent lever AdApiFaultDetail.

Certaines opérations de gestion de campagne peuvent également lever ApiFaultDetail ou EditorialApiFaultDetail.

Pour plus d’informations, consultez Campaign Management Data Objects.
Facturation des clients Toutes les opérations de facturation client peuvent lever AdApiFaultDetail et ApiFault.

Certaines opérations de facturation client peuvent également lever ApiBatchFault.
Gestion des clients Toutes les opérations de gestion des clients peuvent lever AdApiFaultDetail et ApiFault.
Reporting Toutes les opérations de création de rapports peuvent lever AdApiFaultDetail et ApiFaultDetail.

Remarque

Tous les objets d’erreur sont dérivés de l’objet ApplicationFault . L’objet ApplicationFault définit l’élément TrackingId, qui identifie de façon unique l’entrée de journal qui contient les détails de l’appel d’API. Si vous devez contacter le support technique, indiquez l’ID de suivi avec la date et l’heure auxquelles vous avez appelé l’opération de service.

Réussite partielle

La réussite partielle signifie que lors de l’ajout, de la mise à jour ou de la suppression d’entités dans des lots d’un ou plusieurs, l’opération peut réussir pour certains et échouer pour une partie du lot.

Réussite partielle avec le service en bloc

Lorsque vous chargez des enregistrements dans un fichier en bloc, le chargement peut réussir pour certains enregistrements et échouer pour d’autres dans le lot. Lorsque vous appelez GetBulkUploadUrl , vous pouvez choisir de recevoir ou non des erreurs dans le fichier de résultats de chargement.

Remarque

Microsoft Advertising ne prend pas en charge le comportement de gestion des erreurs « tout ou rien ». Vous devrez gérer cela côté client.

Réussite partielle avec le service de gestion des campagnes

Pour la plupart des entités, la réussite partielle est prise en charge lors de l’appel des opérations du service Campaign Management . Pour chaque index de liste où une entité n’a pas été ajoutée, l’élément correspondant est null. L’élément PartialErrors représente un tableau d’objets BatchError qui contiennent des détails pour toutes les entités qui n’ont pas été correctement ajoutées, mises à jour ou supprimées. La liste inclut uniquement un BatchError pour les tentatives infructueuses, et n’inclut pas d’éléments null à l’index de chaque entité ajoutée avec succès. De même, certaines opérations retournent NestedPartialErrors sous la forme d’une liste de BatchErrorCollection ou d’un BatchError à deux dimensions.

Remarque

L’opération ApplyProductPartitionActions inclut PartialErrors dans la réponse ; Toutefois, la réussite partielle n’est pas prise en charge. Soit l’ensemble des actions demandées réussit et la liste de réponses AdGroupCriterionIds est entièrement remplie, soit toutes échouent et la liste de réponses PartialErrors est entièrement remplie.

Exceptions .NET

Si vous utilisez le Kit de développement logiciel (SDK) Bing Ads .NET, votre application doit être prête à gérer les exceptions de niveau de service de l’API Bing Ads, les exceptions WCF et les exceptions du Kit de développement logiciel (SDK) Bing Ads .NET décrites ci-dessous.

Pour résoudre les problèmes liés aux applications .NET, consultez Résolution des problèmes liés au Kit de développement logiciel (SDK) .NET.

WCF Exceptions

Les erreurs SOAP génériques qui ne sont pas spécifiques à l’API Bing Ads peuvent également être levées et doivent être interceptées par votre application. Par exemple, les applications .NET peuvent lever des exceptions Windows Communication Foundation (WCF), telles que Exception, TimeoutException et CommunicationException. Pour plus d’informations sur les exceptions que vous devez attendre de WCF, consultez Exceptions attendues.

Vous ne devez pas appeler la méthode Close dans le bloc finally pour libérer l’objet de service. L’objection est que la méthode Close peut lever des exceptions. Si Close lève une exception, vous devez appeler la méthode Abort pour vous assurer que toutes les ressources sont libérées . sinon, vous risquez de fuiter des ressources sur le serveur. La pratique recommandée consiste à appeler Close dans le bloc try et à appeler Abort à partir des exceptions interceptées.

Pour la même raison, l’utilisation de l’instruction using n’est pas recommandée. Pour plus d’informations, consultez Éviter les problèmes liés à l’instruction Using.

Exceptions du Kit de développement logiciel (SDK) .NET

Les exceptions du Kit de développement logiciel (SDK) Bing Ads .NET abstractionnt certaines des exceptions de niveau de service. Pour contourner la plupart des exceptions, vous pouvez réessayer et n’hésitez pas à contacter le support si le problème persiste après plusieurs tentatives.

Exception Espaces de noms Description
CouldNotDownloadResultFileException Microsoft.BingAds Cette exception est levée par le Kit de développement logiciel (SDK) httpService interne après l’échec d’une tentative de téléchargement d’un fichier de résultats en bloc ou de création de rapports.
CouldNotUploadFileException Microsoft.BingAds Cette exception est levée par le Kit de développement logiciel (SDK) httpservice interne après l’échec d’une tentative de chargement d’un fichier en bloc.
OAuthTokenRequestException Microsoft.BingAds Cette exception est levée si une erreur a été retournée à partir du serveur d’autorisation de compte Microsft. Pour résoudre cette exception, vous pouvez d’abord case activée la trace de la pile pour afficher les détails de l’erreur, au cas où vous pouvez prendre des mesures pour résoudre le problème. Par exemple, vous avez peut-être spécifié un ID client non valide.
BulkOperationCouldNotBeCompletedException Microsoft.BingAds.V13.Bulk Cette exception est levée si une tentative d’interrogation a été effectuée pour rechercher un fichier de résultats en bloc terminé et que le service en bloc retourne une status ayant échoué.
BulkOperationInProgressException Microsoft.BingAds.V13.Bulk Cette exception est levée si une tentative de téléchargement d’un fichier de résultats en bloc qui n’est pas encore disponible a été effectuée.
CouldNotGetBulkOperationStatusException Microsoft.BingAds.V13.Bulk Cette exception est levée si BulkServiceManager n’a pas pu obtenir l’opération de chargement ou de téléchargement status après plusieurs nouvelles tentatives.
CouldNotSubmitBulkDownloadException Microsoft.BingAds.V13.Bulk Cette exception est levée par BulkServiceManager lorsque l’opération de service DownloadCampaignsByAccountIds qu’il a appelée ne retourne pas de réponse valide.
CouldNotSubmitBulkUploadException Microsoft.BingAds.V13.Bulk Cette exception est levée par BulkServiceManager lorsque l’opération de service GetBulkUploadUrl qu’il a appelée ne retourne pas de réponse valide.
EntityReadException Microsoft.BingAds.V13.Bulk Cette exception est levée lors de la tentative de lecture d’entités à partir d’un fichier en bloc à l’aide de BulkFileReader. Pour résoudre cette exception, vous pouvez d’abord case activée la trace de la pile pour afficher les détails de l’erreur, au cas où vous pouvez prendre des mesures pour résoudre le problème. Par exemple, le fichier en bloc à partir duquel vous tentez de lire peut avoir une valeur non valide dans l’un des champs.
EntityWriteException Microsoft.BingAds.V13.Bulk Cette exception est levée lors de la tentative d’écriture d’entités dans un fichier en bloc à l’aide de BulkFileWriter. Pour résoudre cette exception, vous pouvez d’abord case activée la trace de la pile pour afficher les détails de l’erreur, au cas où vous pouvez prendre des mesures pour résoudre le problème. Par exemple, vous avez peut-être spécifié une valeur non valide pour l’une des entités de chargement.
CouldNotGetReportingDownloadStatusException Microsoft.BingAds.V13.Reporting Cette exception est levée si ReportingServiceManager n’a pas pu obtenir l’opération de téléchargement status après plusieurs nouvelles tentatives.
CouldNotSubmitReportingDownloadException Microsoft.BingAds.V13.Reporting Cette exception est levée par ReportingServiceManager lorsque l’opération de service SubmitGenerateReport qu’il a appelée ne retourne pas de réponse valide.
ReportingOperationCouldNotBeCompletedException Microsoft.BingAds.V13.Reporting Cette exception est levée si une tentative d’interrogation a été effectuée pour rechercher un fichier de résultats de rapports terminé et que le service de création de rapports retourne une status ayant échoué.
ReportingOperationInProgressException Microsoft.BingAds.V13.Reporting Cette exception est levée si une tentative de téléchargement d’un fichier de résultats de rapport qui n’est pas encore disponible a été effectuée.

Résolution des problèmes du Kit de développement logiciel (SDK) .NET

Sauf s’il existe un problème de service connu, en général, lorsqu’un appel échoue, c’est parce que les éléments SOAP ne sont pas valides, ne sont pas dans le bon ordre ou que vous avez spécifié des informations d’identification incorrectes. Pour vérifier les deux cas, vous devez capturer l’enveloppe SOAP de la demande. Vous pouvez contacter le support technique ou comparer votre capture à l’exemple SOAP correspondant documenté pour chaque opération de service.

Trace du KIT de développement logiciel (SDK

Vous pouvez utiliser le Kit de développement logiciel (SDK) Bing Ads .NET TraceBehavior pour journaliser la demande et la réponse SOAP.

Remarque

TraceBehavior est disponible avec le Kit de développement logiciel (SDK) Bing Ads .NET version 12.13.5 et ultérieures.

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();
}

L’extrait de code ci-dessus de Program.cs a été exécuté à l’aide du Kit de développement logiciel (SDK) Bing Ads .NET version 13.0.5 avec les packages NuGet suivants. Votre implémentation varie.

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.Extensions.Configuration" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Configuration.Abstractions" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Configuration.Binder" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.DependencyInjection" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Logging" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Logging.Abstractions" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Logging.Debug" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Logging.TraceSource" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Options" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Primitives" version="2.2.0" targetFramework="net471" />
  <package id="Newtonsoft.Json" version="12.0.2" targetFramework="net471" />
  <package id="System.Buffers" version="4.4.0" targetFramework="net471" />
  <package id="System.ComponentModel.Annotations" version="4.5.0" targetFramework="net471" />
  <package id="System.Configuration.ConfigurationManager" version="4.5.0" targetFramework="net471" />
  <package id="System.Memory" version="4.5.1" targetFramework="net471" />
  <package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net471" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.1" targetFramework="net471" />
  <package id="System.Security.AccessControl" version="4.5.0" targetFramework="net471" />
  <package id="System.Security.Permissions" version="4.5.0" targetFramework="net471" />
  <package id="System.Security.Principal.Windows" version="4.5.0" targetFramework="net471" />
  <package id="System.ServiceModel.Http" version="4.5.3" targetFramework="net471" />
  <package id="System.ServiceModel.Primitives" version="4.5.3" targetFramework="net471" />
</packages>

Fiddler Options

Vous pouvez suivre ces étapes pour capturer les enveloppes SOAP à partir d’une application .NET à l’aide d’un outil tiers tel que Fiddler.

  • Après avoir installé Fiddler, exportez le certificat Fiddler à partir du magasin de certificats racine.
  • Cliquez sur Outils>Options fiddler.
  • Sélectionnez l’onglet HTTPS, puis cliquez sur la zone Déchiffrer le trafic HTTPS case activée.
  • Cliquez sur OK, puis suivez les invites pour exporter le certificat Fiddler.

Java Exceptions

Si vous utilisez le Kit de développement logiciel (SDK) Java Bing Ads, votre application doit être prête à gérer les exceptions de niveau de service de l’API Bing Ads et les exceptions du Kit de développement logiciel (SDK) Java Bing Ads décrites ci-dessous.

Pour résoudre les problèmes liés aux applications Java, consultez Résolution des problèmes liés au Kit de développement logiciel (SDK) Java.

Exceptions du Kit de développement logiciel (SDK) Java

Les exceptions du Kit de développement logiciel (SDK) Java Bing Ads résument certaines exceptions de niveau de service. Pour contourner la plupart des exceptions, vous pouvez réessayer et n’hésitez pas à contacter le support si le problème persiste après plusieurs tentatives.

Exception Espaces de noms Description
CouldNotDownloadResultFileException com.microsoft.bingads Cette exception est levée par le Kit de développement logiciel (SDK) httpService interne après l’échec d’une tentative de téléchargement d’un fichier de résultats en bloc ou de création de rapports.
CouldNotUploadFileException com.microsoft.bingads Cette exception est levée par le Kit de développement logiciel (SDK) httpservice interne après l’échec d’une tentative de chargement d’un fichier en bloc.
OAuthTokenRequestException com.microsoft.bingads Cette exception est levée si une erreur a été retournée à partir du serveur d’autorisation de compte Microsft. Pour résoudre cette exception, vous pouvez d’abord case activée la trace de la pile pour afficher les détails de l’erreur, au cas où vous pouvez prendre des mesures pour résoudre le problème. Par exemple, vous avez peut-être spécifié un ID client non valide.
BulkDownloadCouldNotBeCompletedException com.microsoft.bingads.V13.bulk Cette exception est levée si une tentative d’interrogation a été effectuée pour rechercher un fichier de résultats de téléchargement en bloc terminé et que le service en bloc retourne un status ayant échoué.
BulkOperationInProgressException com.microsoft.bingads.V13.bulk Cette exception est levée si une tentative de téléchargement d’un fichier de résultats en bloc qui n’est pas encore disponible a été effectuée.
BulkUploadCouldNotBeCompletedException com.microsoft.bingads.V13.bulk Cette exception est levée si une tentative d’interrogation a été effectuée pour rechercher un fichier de résultats de chargement en bloc terminé et que le service en bloc retourne une status ayant échoué.
CouldNotGetBulkOperationStatusException com.microsoft.bingads.V13.bulk Cette exception est levée si BulkServiceManager n’a pas pu obtenir l’opération de chargement ou de téléchargement status après plusieurs nouvelles tentatives.
CouldNotSubmitBulkDownloadException com.microsoft.bingads.V13.bulk Cette exception est levée par BulkServiceManager lorsque l’opération de service DownloadCampaignsByAccountIds qu’il a appelée ne retourne pas de réponse valide.
CouldNotSubmitBulkUploadException com.microsoft.bingads.V13.bulk Cette exception est levée par BulkServiceManager lorsque l’opération de service GetBulkUploadUrl qu’il a appelée ne retourne pas de réponse valide.
EntityReadException com.microsoft.bingads.V13.bulk Cette exception est levée lors de la tentative de lecture d’entités à partir d’un fichier en bloc à l’aide de BulkFileReader. Pour résoudre cette exception, vous pouvez d’abord case activée la trace de la pile pour afficher les détails de l’erreur, au cas où vous pouvez prendre des mesures pour résoudre le problème. Par exemple, le fichier en bloc à partir duquel vous tentez de lire peut avoir une valeur non valide dans l’un des champs.
EntityWriteException com.microsoft.bingads.V13.bulk Cette exception est levée lors de la tentative d’écriture d’entités dans un fichier en bloc à l’aide de BulkFileWriter. Pour résoudre cette exception, vous pouvez d’abord case activée la trace de la pile pour afficher les détails de l’erreur, au cas où vous pouvez prendre des mesures pour résoudre le problème. Par exemple, vous avez peut-être spécifié une valeur non valide pour l’une des entités de chargement.
CouldNotGetReportingDownloadStatusException com.microsoft.bingads.V13.reporting Cette exception est levée si ReportingServiceManager n’a pas pu obtenir l’opération de téléchargement status après plusieurs nouvelles tentatives.
CouldNotSubmitReportingDownloadException com.microsoft.bingads.V13.reporting Cette exception est levée par ReportingServiceManager lorsque l’opération de service SubmitGenerateReport qu’il a appelée ne retourne pas de réponse valide.
ReportingOperationCouldNotBeCompletedException com.microsoft.bingads.V13.reporting Cette exception est levée si une tentative d’interrogation a été effectuée pour rechercher un fichier de résultats de rapports terminé et que le service de création de rapports retourne une status ayant échoué.
ReportingOperationInProgressException com.microsoft.bingads.V13.reporting Cette exception est levée si une tentative de téléchargement d’un fichier de résultats de rapport qui n’est pas encore disponible a été effectuée.

Résolution des problèmes du Kit de développement logiciel (SDK)

Sauf s’il existe un problème de service connu, en général, lorsqu’un appel échoue, c’est parce que les éléments SOAP ne sont pas valides, ne sont pas dans le bon ordre ou que vous avez spécifié des informations d’identification incorrectes. Pour vérifier dans tous les cas, vous devez capturer l’enveloppe SOAP de la demande. Vous pouvez contacter le support technique ou comparer votre capture à l’exemple SOAP correspondant documenté pour chaque opération de service.

Options JAX WS et Apache CXF

Vous pouvez utiliser JAX WS et Apache CXF pour capturer les enveloppes SOAP, par exemple si vous exécutez une application Maven.

  1. Modifiez pom.xml pour inclure les dépendances suivantes.

    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>2.3.2</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-ri</artifactId>
        <version>2.3.2</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>rt</artifactId>
        <version>2.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>3.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>3.3.2</version>
    </dependency>  
    
    
  2. Ajoutez les lignes suivantes à votre application Java.

    System.setProperty("com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump", "true");
    System.setProperty("com.sun.xml.internal.ws.transport.http.HttpAdapter.dump", "true");
    

Fiddler Options

Vous pouvez suivre ces étapes pour capturer les enveloppes SOAP à partir d’une application Java à l’aide d’un outil tiers tel que Fiddler.

  1. Après avoir installé Fiddler, exportez le certificat Fiddler à partir du magasin de certificats racine. Cliquez sur Outils>Options fiddler. Sélectionnez l’onglet HTTPS, puis cliquez sur la zone Déchiffrer le trafic HTTPS case activée. Cliquez sur OK, puis suivez les invites pour exporter le certificat Fiddler.

  2. Utilisez la commande suivante pour importer le certificat dans le magasin cacert utilisé par Java, par exemple exécuter à partir de PowerShell en tant qu’administrateur.

    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. Ajoutez les lignes suivantes à votre application Java.

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

PHP Exceptions

Si vous utilisez le Kit de développement logiciel (SDK) PHP Bing Ads, votre application doit être prête à gérer les exceptions de niveau de service de l’API Bing Ads et les exceptions du Kit de développement logiciel (SDK) PHP Bing Ads décrites ci-dessous.

Pour résoudre les problèmes liés aux applications PHP, consultez Résolution des problèmes du KIT de développement logiciel (SDK) PHP.

Résolution des problèmes du Kit de développement logiciel (SDK)

Sauf s’il existe un problème de service connu, en général, lorsqu’un appel échoue, c’est parce que les éléments SOAP ne sont pas valides, ne sont pas dans le bon ordre ou que vous avez spécifié des informations d’identification incorrectes. Pour vérifier les deux cas, vous devez capturer l’enveloppe SOAP de la demande. Vous pouvez contacter le support technique ou comparer votre capture à l’exemple SOAP correspondant documenté pour chaque opération de service.

Imprimer SOAP

En PHP, vous pouvez utiliser les méthodes suivantes pour imprimer les enveloppes SOAP. Chacun des exemples de code PHP inclut ces instructions pour imprimer les erreurs dans la console.

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

Exceptions du Kit de développement logiciel (SDK) PHP

Les exceptions du Kit de développement logiciel (SDK) PHP Bing Ads éliminent certaines exceptions de niveau de service. Pour contourner la plupart des exceptions, vous pouvez réessayer et n’hésitez pas à contacter le support si le problème persiste après plusieurs tentatives.

Vous devez également gérer la OAuthTokenRequestException, qui est levée si une erreur a été retournée à partir du serveur d’autorisation du compte Microsft. Pour résoudre cette exception, vous pouvez d’abord case activée la trace de la pile pour afficher les détails de l’erreur, au cas où vous pouvez prendre des mesures pour résoudre le problème. Par exemple, vous avez peut-être spécifié un ID client non valide.

Python Exceptions

Si vous utilisez le Kit de développement logiciel (SDK) Python Bing Ads, votre application doit être prête à gérer les exceptions de niveau de service de l’API Bing Ads et les exceptions du Kit de développement logiciel (SDK) Python Bing Ads décrites ci-dessous.

Pour résoudre les problèmes liés aux applications Python, consultez Résolution des problèmes liés au Kit de développement logiciel (SDK) Python.

Exceptions du KIT de développement logiciel (SDK) Python

Les exceptions du Kit de développement logiciel (SDK) Python Bing Ads résument certaines exceptions de niveau de service. Pour contourner la plupart des exceptions, vous pouvez réessayer et n’hésitez pas à contacter le support si le problème persiste après plusieurs tentatives.

Exception Espaces de noms Description
BulkException BingAds.V13.Bulk Cette exception est levée si une tentative d’interrogation a été effectuée pour rechercher un fichier de résultats en bloc terminé et que le service en bloc retourne une status ayant échoué.
BulkDownloadException BingAds.V13.Bulk Cette exception est levée si le délai d’expiration se produit lors de la tentative de téléchargement d’un fichier en bloc.
BulkUploadException BingAds.V13.Bulk Cette exception est levée si le délai d’expiration se produit lors de la tentative de téléchargement d’un fichier de résultats de chargement en bloc.
EntityReadException BingAds.V13.Bulk Cette exception est levée lors de la tentative de lecture d’entités à partir d’un fichier en bloc à l’aide de BulkFileReader. Pour résoudre cette exception, vous pouvez d’abord case activée la trace de la pile pour afficher les détails de l’erreur, au cas où vous pouvez prendre des mesures pour résoudre le problème. Par exemple, le fichier en bloc à partir duquel vous tentez de lire peut avoir une valeur non valide dans l’un des champs.
EntityWriteException BingAds.V13.Bulk Cette exception est levée lors de la tentative d’écriture d’entités dans un fichier en bloc à l’aide de BulkFileWriter. Pour résoudre cette exception, vous pouvez d’abord case activée la trace de la pile pour afficher les détails de l’erreur, au cas où vous pouvez prendre des mesures pour résoudre le problème. Par exemple, vous avez peut-être spécifié une valeur non valide pour l’une des entités de chargement.
FileDownloadException BingAds Cette exception est levée si le délai d’expiration se produit lors de la tentative de téléchargement d’un fichier de résultats de chargement en bloc.
FileUploadException BingAds Cette exception est levée si le délai d’expiration se produit lors de la tentative de chargement d’un fichier en bloc.
OAuthTokenRequestException BingAds Cette exception est levée si une erreur a été retournée à partir du serveur d’autorisation de compte Microsft. Pour résoudre cette exception, vous pouvez d’abord case activée la trace de la pile pour afficher les détails de l’erreur, au cas où vous pouvez prendre des mesures pour résoudre le problème. Par exemple, vous avez peut-être spécifié un ID client non valide.
ReportingException BingAds.V13.Reporting Cette exception est levée si une tentative d’interrogation a été effectuée pour rechercher un fichier de résultats de rapports terminé et que le service de création de rapports retourne une status ayant échoué.
ReportingDownloadException BingAds.V13.Reporting Cette exception est levée si le délai d’expiration se produit lors de la tentative de téléchargement d’un fichier de résultats de rapport.
SdkException BingAds Classe d’exception de base pour le Kit de développement logiciel (SDK) Python Bing Ads. Cette exception n’est jamais levée.
TimeoutException BingAds Cette exception est levée si le délai d’expiration se produit.

Résolution des problèmes du Kit de développement logiciel (SDK)

Sauf s’il existe un problème de service connu, en général, lorsqu’un appel échoue, c’est parce que les éléments SOAP ne sont pas valides, ne sont pas dans le bon ordre ou que vous avez spécifié des informations d’identification incorrectes. Pour vérifier les deux cas, vous devez capturer l’enveloppe SOAP de la demande. Vous pouvez contacter le support technique ou comparer votre capture à l’exemple SOAP correspondant documenté pour chaque opération de service.

Journalisation

Si vous utilisez le Kit de développement logiciel (SDK) Python Bing Ads, vous pouvez inclure la journalisation dans le trafic de sortie, par exemple la requête et la réponse SOAP. Chacun des exemples de code Python inclut ces instructions pour imprimer la sortie tout le trafic SOAP sur la console. Veillez à supprimer les marques de commentaire si vous souhaitez afficher le trafic.

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

Voir aussi

Codes d’erreur d’opération de l’API Bing Ads
Adresses du service web de l’API Bing Ads