2020-06-04 15:12:54 +01:00
<!doctype html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width" >
< meta name = "generator" content = "Docusaurus v2.0.0-alpha.56" >
2020-06-04 15:22:07 +01:00
< title data-react-helmet = "true" > Retry Handling | SpotifyAPI-NET< / title > < meta data-react-helmet = "true" name = "docsearch:version" content = "next" > < meta data-react-helmet = "true" name = "twitter:card" content = "summary_large_image" > < meta data-react-helmet = "true" property = "og:title" content = "Retry Handling | SpotifyAPI-NET" > < meta data-react-helmet = "true" name = "description" content = "In Error Handling we already found out that requests can fail. We provide a way to automatically retry requests via retry handlers. Note, by default no retries are performed." > < meta data-react-helmet = "true" property = "og:description" content = "In Error Handling we already found out that requests can fail. We provide a way to automatically retry requests via retry handlers. Note, by default no retries are performed." > < meta data-react-helmet = "true" property = "og:url" content = "https://johnnycrazy.github.io/SpotifyAPI-NET/docs/next/retry_handling" > < link data-react-helmet = "true" rel = "shortcut icon" href = "/SpotifyAPI-NET/img/favicon.ico" > < link data-react-helmet = "true" rel = "canonical" href = "https://johnnycrazy.github.io/SpotifyAPI-NET/docs/next/retry_handling" > < link rel = "stylesheet" href = "/SpotifyAPI-NET/styles.8a053330.css" >
< link rel = "preload" href = "/SpotifyAPI-NET/styles.c98ed224.js" as = "script" >
2020-06-04 20:35:36 +01:00
< link rel = "preload" href = "/SpotifyAPI-NET/runtime~main.ae448213.js" as = "script" >
2020-06-04 17:36:47 +01:00
< link rel = "preload" href = "/SpotifyAPI-NET/main.f44004eb.js" as = "script" >
2020-06-04 15:22:07 +01:00
< link rel = "preload" href = "/SpotifyAPI-NET/1.93fdc54d.js" as = "script" >
2020-06-04 17:36:47 +01:00
< link rel = "preload" href = "/SpotifyAPI-NET/2.1ac78bee.js" as = "script" >
< link rel = "preload" href = "/SpotifyAPI-NET/3.211279ce.js" as = "script" >
< link rel = "preload" href = "/SpotifyAPI-NET/1be78505.89b0a17b.js" as = "script" >
2020-06-04 15:22:07 +01:00
< link rel = "preload" href = "/SpotifyAPI-NET/ad407b76.8960c692.js" as = "script" >
2020-06-04 20:35:36 +01:00
< link rel = "preload" href = "/SpotifyAPI-NET/1aaf601c.87b9ea46.js" as = "script" >
2020-06-04 15:12:54 +01:00
< / head >
< body >
< script > ! function ( ) { function t ( t ) { document . documentElement . setAttribute ( "data-theme" , t ) } var e = window . matchMedia ( "(prefers-color-scheme: dark)" ) , n = function ( ) { var t = null ; try { t = localStorage . getItem ( "theme" ) } catch ( t ) { } return t } ( ) ; null !== n ? t ( n ) : e . matches && t ( "dark" ) } ( ) < / script > < div id = "__docusaurus" >
2020-06-04 15:22:07 +01:00
< nav class = "navbar navbar--light navbar--fixed-top" > < div class = "navbar__inner" > < div class = "navbar__items" > < div aria-label = "Navigation bar toggle" class = "navbar__toggle" role = "button" tabindex = "0" > < svg xmlns = "http://www.w3.org/2000/svg" width = "30" height = "30" viewBox = "0 0 30 30" role = "img" focusable = "false" > < title > Menu< / title > < path stroke = "currentColor" stroke-linecap = "round" stroke-miterlimit = "10" stroke-width = "2" d = "M4 7h22M4 15h22M4 23h22" > < / path > < / svg > < / div > < a class = "navbar__brand" href = "/SpotifyAPI-NET/" > < img class = "navbar__logo" src = "/SpotifyAPI-NET/img/logo.svg" alt = "SpotifyAPI-NET" > < strong class = "navbar__title" > SpotifyAPI-NET< / strong > < / a > < div class = "navbar__item dropdown dropdown--hoverable dropdown--left" > < a activeclassname = "navbar__link--active" class = "navbar__item navbar__link" > Docs< / a > < ul class = "dropdown__menu" > < li > < a class = "dropdown__link" href = "/SpotifyAPI-NET/docs/next/introduction" > Latest/Next< / a > < / li > < li > < a class = "dropdown__link" href = "/SpotifyAPI-NET/docs/home" > 5.1.1< / a > < / li > < / ul > < / div > < a class = "navbar__item navbar__link" href = "/SpotifyAPI-NET/news" > News< / a > < / div > < div class = "navbar__items navbar__items--right" > < a href = "https://github.com/JohnnyCrazy/SpotifyAPI-NET" target = "_blank" rel = "noopener noreferrer" class = "navbar__item navbar__link" > GitHub< / a > < div class = "react-toggle react-toggle--disabled displayOnlyInLargeViewport_1gtM" > < div class = "react-toggle-track" > < div class = "react-toggle-track-check" > < span class = "toggle_keGJ moon_1gwN" > < / span > < / div > < div class = "react-toggle-track-x" > < span class = "toggle_keGJ sun_3CPA" > < / span > < / div > < / div > < div class = "react-toggle-thumb" > < / div > < input type = "checkbox" disabled = "" aria-label = "Dark mode toggle" class = "react-toggle-screenreader-only" > < / div > < / div > < / div > < div role = "presentation" class = "navbar-sidebar__backdrop" > < / div > < div class = "navbar-sidebar" > < div class = "navbar-sidebar__brand" > < a class = "navbar__brand" href = "/SpotifyAPI-NET/" > < img class = "navbar__logo" src = "/SpotifyAPI-NET/img/logo.svg" alt = "SpotifyAPI-NET" > < strong class = "navbar__title" > SpotifyAPI-NET< / strong > < / a > < / div > < div class = "navbar-sidebar__items" > < div class = "menu" > < ul class = "menu__list" > < li class = "menu__list-item" > < a activeclassname = "navbar__link--active" class = "menu__link menu__link--sublist" > Docs< / a > < ul class = "menu__list" > < li class = "menu__list-item" > < a class = "menu__link" href = "/SpotifyAPI-NET/docs/next/introduction" > Latest/Next< / a > < / li > < li class = "menu__list-item" > < a class = "menu__link" href = "/SpotifyAPI-NET/docs/home" > 5.1.1< / a > < / li > < / ul > < / li > < li class = "menu__list-item" > < a class = "menu__link" href = "/SpotifyAPI-NET/news" > News< / a > < / li > < li class = "menu__list-item" > < a href = "https://github.com/JohnnyCrazy/SpotifyAPI-NET" target = "_blank" rel = "noopener noreferrer" class = "menu__link" > GitHub< / a > < / li > < / ul > < / div > < / div > < / div > < / nav > < div class = "main-wrapper" > < div class = "docPage_1kjD" > < div class = "docSidebarContainer_1cYp" > < div class = "sidebar_1kLs" > < div class = "menu menu--responsive menu_w2sC" > < button aria-label = "Open Menu" aria-haspopup = "true" class = "button button--secondary button--sm menu__button" type = "button" > < svg aria-label = "Menu" class = "sidebarMenuIcon_2vk4" xmlns = "http://www.w3.org/2000/svg" height = "24" width = "24" viewBox = "0 0 32 32" role = "img" focusable = "false" > < title > Menu< / title > < path stroke = "currentColor" stroke-linecap = "round" stroke-miterlimit = "10" stroke-width = "2" d = "M4 7h22M4 15h22M4 23h22" > < / path > < / svg > < / button > < ul class = "menu__list" > < li class = "menu__list-item" > < a class = "menu__link menu__link--sublist menu__link--active" href = "#!" > SpotifyAPI-NET< / a > < ul class = "menu__list" > < li class = "menu__list-item" > < a class = "menu__link" tabindex = "0" href = "/SpotifyAPI-NET/docs/next/introduction" > Introduction< / a > < / li > < li class = "menu__list-item" > < a class = "menu__link" tabindex = "0" href = "/SpotifyAPI-NET/docs/next/getting_started" > Getting Started< / a > < / li > < li class = "menu__list-item" > < a class = "menu__link menu__link--sublist menu__link--active" href = "#!" tabindex = "0" > Guides< / a > < ul class = "menu__list" > < li class = "menu__list-item" > < a class = "menu__link" tabindex = "0" href = "/SpotifyAPI-NET/docs/next/error_handling" > Error Handling< / a > < / li > < li class
2020-06-04 15:12:54 +01:00
< / span > < / div > < div class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > // don' t retry:< / span > < / div > < div class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > return response;< / span > < / div > < div class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" style = "display:inline-block" >
< / span > < / div > < div class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > // retry once< / span > < / div > < div class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > var newResponse = retry(request);< / span > < / div > < div class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > return newResponse;< / span > < / div > < div class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" style = "display:inline-block" >
< / span > < / div > < div class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > // use retry as often as you want, make sure to return a response< / span > < / div > < div class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > }< / span > < / div > < div class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > }< / span > < / div > < / div > < / div > < / div > < / div > < h2 > < a aria-hidden = "true" tabindex = "-1" class = "anchor enhancedAnchor_ZqCz" id = "simpleretryhandler" > < / a > SimpleRetryHandler< a aria-hidden = "true" tabindex = "-1" class = "hash-link" href = "#simpleretryhandler" title = "Direct link to heading" > #< / a > < / h2 > < p > A < code > SimpleRetryHandler< / code > is included, which contains the following retry logic:< / p > < ul > < li > Retries the (configurable) status codes: 500, 502, 503 and 429< / li > < li > < code > RetryAfter< / code > - specifies the delay between retried calls< / li > < li > < code > RetryTimes< / code > - specifies the maxiumum amount of performed retries per call< / li > < li > < code > TooManyRequestsConsumesARetry< / code > - Whether a failure of type " Too Many Requests" should use up one of the retry attempts.< / li > < / ul > < div class = "mdxCodeBlock_iHAB" > < div class = "codeBlockContent_32p_" > < button type = "button" aria-label = "Copy code to clipboard" class = "copyButton_1BYj" > Copy< / button > < div tabindex = "0" class = "prism-code language-csharp codeBlock_19pQ" > < div class = "codeBlockLines_2n9r" style = "color:#bfc7d5;background-color:#292d3e" > < div class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > var config = SpotifyClientConfig< / span > < / div > < div class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > .CreateDefault()< / span > < / div > < div class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > .WithRetryHandler(new SimpleRetryHandler() { RetryAfter = TimeSpan.FromSeconds(1) });< / span > < / div > < div class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" style = "display:inline-block" >
2020-06-04 20:35:36 +01:00
< / span > < / div > < div class = "token-line" style = "color:#bfc7d5" > < span class = "token plain" > var spotify = new SpotifyClient(config);< / span > < / div > < / div > < / div > < / div > < / div > < / div > < / article > < div class = "margin-vert--xl" > < div class = "row" > < div class = "col" > < a href = "https://github.com/JohnnyCrazy/SpotifyAPI-NET/edit/master/SpotifyAPI.Docs/docs/retry_handling.md" target = "_blank" rel = "noreferrer noopener" > < svg fill = "currentColor" height = "1.2em" width = "1.2em" preserveAspectRatio = "xMidYMid meet" viewBox = "0 0 40 40" style = "margin-right:0.3em;vertical-align:sub" > < g > < path d = "m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z" > < / path > < / g > < / svg > Edit this page< / a > < / div > < div class = "col text--right" > < em > < small > Last updated on < time datetime = "2020-06-04T19:32:52.000Z" class = "docLastUpdatedAt_1sqk" > 6/4/2020< / time > by < strong > Jonas Dellinger< / strong > < / small > < / em > < / div > < / div > < / div > < div class = "margin-vert--lg" > < nav class = "pagination-nav" > < div class = "pagination-nav__item" > < a class = "pagination-nav__link" href = "/SpotifyAPI-NET/docs/next/pagination" > < div class = "pagination-nav__sublabel" > Previous< / div > < div class = "pagination-nav__label" > « Pagination< / div > < / a > < / div > < div class = "pagination-nav__item pagination-nav__item--next" > < a class = "pagination-nav__link" href = "/SpotifyAPI-NET/docs/next/unit_testing" > < div class = "pagination-nav__sublabel" > Next< / div > < div class = "pagination-nav__label" > Unit Testing »< / div > < / a > < / div > < / nav > < / div > < / div > < / div > < div class = "col col--3" > < div class = "tableOfContents_TbNY" > < ul class = "table-of-contents table-of-contents__left-border" > < li > < a href = "#simpleretryhandler" class = "table-of-contents__link" > SimpleRetryHandler< / a > < / li > < / ul > < / div > < / div > < / div > < / div > < / main > < / div > < / div > < footer class = "footer footer--dark" > < div class = "container" > < div class = "text--center" > < div > Copyright © 2020 Jonas Dellinger. Built with Docusaurus.< / div > < / div > < / div > < / footer > < / div >
2020-06-04 15:22:07 +01:00
< script src = "/SpotifyAPI-NET/styles.c98ed224.js" > < / script >
2020-06-04 20:35:36 +01:00
< script src = "/SpotifyAPI-NET/runtime~main.ae448213.js" > < / script >
2020-06-04 17:36:47 +01:00
< script src = "/SpotifyAPI-NET/main.f44004eb.js" > < / script >
2020-06-04 15:22:07 +01:00
< script src = "/SpotifyAPI-NET/1.93fdc54d.js" > < / script >
2020-06-04 17:36:47 +01:00
< script src = "/SpotifyAPI-NET/2.1ac78bee.js" > < / script >
< script src = "/SpotifyAPI-NET/3.211279ce.js" > < / script >
< script src = "/SpotifyAPI-NET/1be78505.89b0a17b.js" > < / script >
2020-06-04 15:22:07 +01:00
< script src = "/SpotifyAPI-NET/ad407b76.8960c692.js" > < / script >
2020-06-04 20:35:36 +01:00
< script src = "/SpotifyAPI-NET/1aaf601c.87b9ea46.js" > < / script >
2020-06-04 15:12:54 +01:00
< / body >
< / html >