Okhttp: Cached header combination dropping headers when repeated name present

Created on 8 Aug 2019  路  9Comments  路  Source: square/okhttp

I have upgraded my project to Retrofit 2.6.1 and OkHttp 4.0.1
Everything seem to work, except when the server returns a 304. Retrofit can't seem to parse the response from the cache (it tries to parse an empty response).

Rolling back to Retrofit 2.5.0 and OkHttp 3.14.0 fix the issue.

bug

Most helpful comment

I think I found the cause of the bug.
In okhttp3.internal.cache.CacheInterceptor.combine() we combine the headers from the cachedResponseand the networkResponse.

Note that in the first response (the response that is cached), the header has twice vary: vary: Accept-Encoding and vary: Accept

As such, here is the content of cachedHeaders.namesAndValues:

namesAndValues = {String[20]@12077} 
 0 = "date"
 1 = "Wed, 04 Sep 2019 13:58:33 GMT"
 2 = "content-type"
 3 = "application/vnd.nuglif.rubicon.card+json"
 4 = "server"
 5 = "openresty/1.15.8.1"
 6 = "vary"
 7 = "Accept-Encoding"
 8 = "x-correlation-id"
 9 = "5d6fc309725f72.26677340"
 10 = "last-modified"
 11 = "Sun, 11 Aug 2019 23:49:40 GMT"
 12 = "etag"
 13 = "W/"cf08ab872bee3291a3aaffbc0c376441-1565567380""
 14 = "vary"
 15 = "Accept"
 16 = "cache-control"
 17 = "public, max-age=60, no-transform"
 18 = "content-encoding"
 19 = "gzip"

The problem is that cachedHeaders.names().indices returns 0..8, where it should return 0..9.
It return 0..8 because vary is inserted twice in the names() set.

And guess what, the value at cachedHeaders.name[9] is content-encoding. So combine() results in a header that does not contain content-encoding (and so Retrofit tries to parse the gzip value without unzipping it first)

I have no idea how to fix the issue. Should we avoid duplicate headers in the cache? Of should Header be refactor to take care of this case?

All 9 comments

Retrofit should never see a 304 as OkHttp will handle the redirect. If it works with a different version of OkHttp such as 3.14 then it's likely an OkHttp bug.

In either case, you need a test case or executable sample that reproduces the problem otherwise it's impossible to know what's going on.

I have created a project that replicates the issue here:
https://github.com/thierryd/RetrofitOkHttp304Bug/tree/master

I couldn鈥檛 reproduce this.

Can you try changing your code to do this:

    val call = service.fetchPostDO("/posts/cf08ab872bee3291a3aaffbc0c376441?ts=1565278077")
    val response: Response<PostDO> = call.execute()
    println("raw response: ${response.raw()}")
    println("raw response network: ${response.raw().networkResponse()}")
    println("raw response cache: ${response.raw().cacheResponse()}")

For me this prints that the network sees a 304 and the cache sees a 200.

The problem occurred only on a Beta version of Android Q (I should have checked with a device running a released version of Android :( )
The latest Beta release of Android Q fixes the problem.
So you can close this bug.

Update: so I was able to replicate the bug on a device running Android 9. It appear it is related to Wi-Fi (the problem doesn't occurs in 3G)

I'll look into it

To sum things up:

  • A first call is made to the server, the server returns a 200 with a cache control of public, max-age=60, no-transform
  • After 60 seconds, a second call is made. The server returns a 304 and Retrofit crash because it cannot parse the response

I can reproduce the crash when the first call is made on the internal Wi-Fi. So apparently the call to the Wi-Fi is what cause the problem.

Using

    println("raw response: ${response.raw()}")
    println("raw response network: ${response.raw().networkResponse()}")
    println("raw response cache: ${response.raw().cacheResponse()}")

doesn't provide any useful information.

The network interceptor on the other hand shows something interesting. In the second call (the 304 calls), when the crash occurs, I see this:

2019-09-03 12:25:27.107 D: --> GET https://api.rb-fe.nuglif.net/posts/cf08ab872bee3291a3aaffbc0c376441?ts=1565278077
2019-09-03 12:25:27.108 D: Accept: application/vnd.nuglif.rubicon.card+json;modules="ad,audio,author,button,collapsible,gallery,photo,post,publicationDates,text,userAction,video,web"
2019-09-03 12:25:27.108 D: --> END GET
2019-09-03 12:25:28.002 D: <-- 200 https://api.rb-fe.nuglif.net/posts/cf08ab872bee3291a3aaffbc0c376441?ts=1565278077 (893ms)
2019-09-03 12:25:28.002 D: content-type: application/vnd.nuglif.rubicon.card+json
2019-09-03 12:25:28.002 D: x-correlation-id: 5d6e93474f8f07.45287086
2019-09-03 12:25:28.002 D: last-modified: Sun, 11 Aug 2019 23:49:40 GMT
2019-09-03 12:25:28.002 D: date: Tue, 03 Sep 2019 16:25:28 GMT
2019-09-03 12:25:28.003 D: server: openresty/1.15.8.1
2019-09-03 12:25:28.003 D: etag: "cf08ab872bee3291a3aaffbc0c376441-1565567380"
2019-09-03 12:25:28.003 D: cache-control: public, max-age=60, no-transform
2019-09-03 12:25:28.003 D: vary: Accept
2019-09-03 12:25:28.005 D: <-- END HTTP (binary 5366-byte body omitted)
2019-09-03 12:25:46.599 D: raw response: Response{protocol=http/1.1, code=200, message=, url=https://api.rb-fe.nuglif.net/posts/cf08ab872bee3291a3aaffbc0c376441?ts=1565278077}
2019-09-03 12:25:46.602 D: raw response network: Response{protocol=h2, code=304, message=, url=https://api.rb-fe.nuglif.net/posts/cf08ab872bee3291a3aaffbc0c376441?ts=1565278077}
2019-09-03 12:25:46.605 D: raw response cache: Response{protocol=http/1.1, code=200, message=, url=https://api.rb-fe.nuglif.net/posts/cf08ab872bee3291a3aaffbc0c376441?ts=1565278077}

Notice (binary 5366-byte body omitted) in the response

As such, it appear that the cause of the problem is that the first request seem to store a binary (the gzip version?) of the response in the cache.

Here are the HTTP dump of the first request which does NOT store a binary response:

2019-09-03 12:19:23.849 D: --> GET https://api.rb-fe.nuglif.net/posts/cf08ab872bee3291a3aaffbc0c376441?ts=1565278077
2019-09-03 12:19:23.849 D: Accept: application/vnd.nuglif.rubicon.card+json;modules="ad,audio,author,button,collapsible,gallery,photo,post,publicationDates,text,userAction,video,web"
2019-09-03 12:19:23.849 D: --> END GET
2019-09-03 12:19:24.421 D: <-- 200 https://api.rb-fe.nuglif.net/posts/cf08ab872bee3291a3aaffbc0c376441?ts=1565278077 (572ms)
2019-09-03 12:19:24.422 D: date: Tue, 03 Sep 2019 16:19:25 GMT
2019-09-03 12:19:24.422 D: content-type: application/vnd.nuglif.rubicon.card+json
2019-09-03 12:19:24.422 D: set-cookie: __cfduid=d17f56143e8f475580487b98bc38201b11567527564; expires=Wed, 02-Sep-20 16:19:24 GMT; path=/; domain=.nuglif.net; HttpOnly; Secure
2019-09-03 12:19:24.422 D: vary: Accept-Encoding
2019-09-03 12:19:24.422 D: x-correlation-id: 5d6e7d4c03ba24.17188966
2019-09-03 12:19:24.422 D: last-modified: Sun, 11 Aug 2019 23:49:40 GMT
2019-09-03 12:19:24.422 D: etag: W/"cf08ab872bee3291a3aaffbc0c376441-1565567380"
2019-09-03 12:19:24.422 D: vary: Accept
2019-09-03 12:19:24.422 D: cache-control: public, max-age=60, no-transform
2019-09-03 12:19:24.422 D: cf-cache-status: REVALIDATED
2019-09-03 12:19:24.422 D: expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
2019-09-03 12:19:24.422 D: server: cloudflare
2019-09-03 12:19:24.422 D: cf-ray: 51090b906e39ab76-YYZ
2019-09-03 12:19:24.427 D: {"data":{"id":"cf08ab872bee3291a3aaffbc0c376441","kind":"stdPost","selfLink":"https:\/\/api.rb-fe.nuglif.net\/posts\/cf08ab872bee3291a3aaffbc0c376441?ts=1565567380","published":"2019-08-08T11:22:47-04:00","modified":"2019-08-08T18:27:45-04:00","section":{"color":"5A79A0","text":{"text":"\u00c9tats-Unis","styles":{"backgroundColor":"5A79A0","color":"ffffff","padding":"{10,16,10,16}","textTransform":"uppercase","fontSize":15,"fontFamily":"Verlag-Bold"}}},"sharing":{"title":"En plein deuil, l\u2019Am\u00e9rique toujours divis\u00e9e sur les armes \u00e0 feu","url":"https:\/\/lp.ca\/hBMI7p"},"items":[{"kind":"video","class":["visual"],"styles":{"margin":"{0,0,32,0}"},"video":{"url":"https:\/\/bellvps1.content.video.llnw.net\/smedia\/e1b3e24ecb944abd8f4ed823a0b76ddc\/q1\/CRdoZicO1K97wjL5ZMAt6UWa7hMTduvMk12KD5CrI\/en_plein_deuil_lamerique_toujours_divise-5d4c53c816e22d000129c7a8_aug_08_2019_17_18_09-019f18abf140b9c3123d558a4488ae8eeedabe63.m3u8","width":1024,"height":576,"thumbnail":"https:\/\/mobile-img.lpcdn.ca\/828x\/r51b1\/b0dd2037-b9f9-11e9-a65c-0eda3a42da3c.webp","adTagUrl":"https:\/\/pubads.g.doubleclick.net\/gampad\/ads?gdfp_req=1&env=vp&unviewed_position_start=1&sz=640x480&iu=%2F21686484267%2FLPM%2FLPM_International&ad_rule=1&cust_params=typePage%3Darticle%26articleId%3Dcf08ab872bee3291a3aaffbc0c376441%26sectionName%3Detats-unis%26videoDuration%3Dvideo61-90&hl=fr","duration":71,"start":0,"autoplay":false,"loop":false}},{"kind":"text","class":["title"],"text":{"text":"En plein deuil, l\u2019Am\u00e9rique toujours divis\u00e9e sur les armes \u00e0 feu","styles":{"fontSize":34,"fontFamily":"Verlag-Bold","padding":"{16,16,10,16}","lineHeight":0.9,"hyphens":"none"}}},{"kind":"publicationDates","styles":{"padding":"{0,16,2,16}","color":"686868"},"published":"2019-08-08T11:22:47-04:00","modified":"2019-08-08T18:27:45-04:00"},{"kind":"text","class":["lead"],"text":{"text":"(El Paso) Cinq jours apr\u00e8s deux fusillades meurtri\u00e8res, le d\u00e9bat sur l\u2019acc\u00e8s aux armes continuait jeudi \u00e0 tourner \u00e0 vide aux \u00c9tats-Unis, la visite de Donald Trump dans les villes endeuill\u00e9es ayant de nouveau illustr\u00e9 les profondes divisions de la soci\u00e9t\u00e9 am\u00e9ricaine. ","styles":{"fontSize":22,"padding":"{10,16,10,16}","fontFamily":"Verlag-Bold","lineHeight":1,"hyphens":"auto"}}},{"kind":"author","styles":{"backgroundColor":"#dedede","padding":"{10,16,10,16}","margin":"{16,16,16,16}"},"name":{"text":"Gilles CLARENNE avec Elodie CUZIN \u00e0 Washington","styles":{"fontSize":14,"textTransform":"uppercase","fontFamily":"Verlag-Black"}},"agency":{"text":"Agence France-Presse","styles":{"fontSize":14,"fontFamily":"Verlag-Book"}}},{"kind":"text","text":{"text":"Le d\u00e9bat persistait aussi sur ce qui aurait pu \u00eatre fait pour emp\u00eacher les deux tueries, perp\u00e9tr\u00e9es \u00e0 13\u00a0heures d\u2019intervalle \u00e0 El Paso, au Texas, et Dayton, dans l\u2019Ohio, par deux jeunes hommes arm\u00e9s de fusils d\u2019assaut qui ont fait 31 morts.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Inqui\u00e8te, la m\u00e8re du tireur d\u2019El Paso avait, selon les m\u00e9dias, pr\u00e9venu la police que ce jeune Blanc aux motivations racistes poss\u00e9dait un fusil d\u2019assaut des semaines avant qu\u2019il n\u2019abatte 22 personnes, en majorit\u00e9 hispaniques. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"},"inlineStyles":[{"n":"color","v":"007aff","s":0,"e":61},{"n":"textDecoration","v":"underline","s":0,"e":61}],"inlineActions":[{"a":{"kind":"openUrl","url":"https:\/\/www.lapresse.ca\/international\/etats-unis\/201908\/08\/01-5236678-el-paso-la-mere-du-tireur-setait-inquietee-aupres-de-la-police.php"},"s":0,"e":61}]}},{"kind":"ad","styles":{"backgroundColor":"d2d2d2","padding":"{8,0,26,0}","margin":"{32,0,32,0}
2019-09-03 12:19:24.427 D: "},"title":{"text":"Publicit\u00e9","styles":{"fontSize":12,"fontFamily":"MuseoSlab-700","textAlign":"center","color":"686868","padding":"{0,0,8,0}","textTransform":"uppercase"}},"ad":{"creative":{"type":"banner","unitId":"\/21686484267\/LPM\/LPM_International","sizes":[[300,50],[320,50],[300,100],[300,250],[300,600]]},"customTargeting":{"publisherContext":{"typePage":"article","articleId":"cf08ab872bee3291a3aaffbc0c376441","sectionName":"etats-unis","position":"pos1"}}}},{"kind":"text","text":{"text":"Un agent lui avait r\u00e9pondu que son fils \u00e9tant majeur, la situation n\u2019avait rien d\u2019ill\u00e9gale. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"photo","class":["under"],"styles":{"margin":"{32,0,24,0}","borderWidth":"{0,0,1,0}","borderColor":"dedede"},"photo":{"url":"https:\/\/mobile-img.lpcdn.ca\/828x\/150abbba-b9fa-11e9-a65c-0eda3a42da3c.webp","width":828,"height":545},"layout":"under","credit":{"text":"REUTERS","styles":{"padding":"{16,16,8,16}","color":"8d8d8d","fontSize":10,"fontFamily":"Verlag-Book","textTransform":"uppercase"}},"description":{"text":"Donald Trump s\u2019est entretenu mercredi avec des membres des forces de l\u2019ordre \u00e0 El Paso.","styles":{"fontSize":14,"padding":"{4, 16, 16, 16}","fontFamily":"Verlag-Book","color":"8d8d8d","lineHeight":0.9}},"fullscreen":true},{"kind":"text","text":{"text":"\u00c0 Dayton, dans l\u2019Ohio, les motivations de l\u2019assaillant, dont la s\u0153ur figure parmi les neuf victimes tu\u00e9es en 30 secondes, restent incertaines.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Lors d\u2019une visite millim\u00e9tr\u00e9e, Donald Trump s\u2019est rendu mercredi dans ces deux villes meurtries.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Pour justifier la tenue \u00e0 distance des m\u00e9dias, la Maison-Blanche a invoqu\u00e9 le respect pour les victimes et leurs familles.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Mais le pr\u00e9sident r\u00e9publicain a plus tard tweet\u00e9 des vid\u00e9os montrant un personnel hospitalier souriant, accompagn\u00e9es d\u2019une musique dramatique au pur go\u00fbt hollywoodien. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Dans une s\u00e9quence film\u00e9e par un particulier, Donald Trump s\u2019\u00e9loigne rapidement\u00a0\u2013\u00a0apparemment insensible \u00e0 la solennit\u00e9 du moment\u00a0\u2013\u00a0des mots d\u2019hommage adress\u00e9s aux m\u00e9decins pour leur vanter la taille de la foule qui l\u2019avait attendu dans la m\u00eame ville en f\u00e9vrier.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"ad","styles":{"backgroundColor":"d2d2d2","padding":"{8,0,26,0}","margin":"{32,0,32,0}"},"title":{"text":"Publicit\u00e9","styles":{"fontSize":12,"fontFamily":"MuseoSlab-700","textAlign":"center","color":"686868","padding":"{0,0,8,0}","textTransform":"uppercase"}},"ad":{"creative":{"type":"banner","unitId":"\/21686484267\/LPM\/LPM_International","sizes":[[300,50],[320,50],[300,100],[300,250],[300,600]]},"customTargeting":{"publisherContext":{"typePage":"article","articleId":"cf08ab872bee3291a3aaffbc0c376441","sectionName":"etats-unis","position":"pos2"}}}},{"kind":"text","text":{"text":"\u00ab\u00a0Trump a r\u00e9ussi hier (mercredi) \u00e0 faire de ses visites un \u00e9v\u00e9nement centr\u00e9 sur sa personne\u00a0\u00bb, s\u2019est indign\u00e9 le parti d\u00e9mocrate.\u00a0\u00a0","styles
2019-09-03 12:19:24.427 D: ":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Chez les manifestants anti-Trump \u00e0 El Paso, on a rappel\u00e9 ses propos incendiaires sur l\u2019immigration clandestine hispanique, qu\u2019il qualifie r\u00e9guli\u00e8rement d\u2019\u00ab\u00a0invasion\u00a0\u00bb. Un terme repris dans un manifeste du tireur publi\u00e9 en ligne avant son massacre. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"\u00ab\u00a0Tout ce que le pr\u00e9sident dit et fait encourage les partisans de la supr\u00e9matie blanche\u00a0\u00bb, a d\u00e9clar\u00e9 jeudi Joe Biden, favori de la primaire d\u00e9mocrate pour la pr\u00e9sidentielle de 2020.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"photo","class":["under"],"styles":{"margin":"{32,0,24,0}","borderWidth":"{0,0,1,0}","borderColor":"dedede"},"photo":{"url":"https:\/\/mobile-img.lpcdn.ca\/828x\/28e6d244-b9f0-11e9-a65c-0eda3a42da3c.webp","width":828,"height":548},"layout":"under","credit":{"text":"AP","styles":{"padding":"{16,16,8,16}","color":"8d8d8d","fontSize":10,"fontFamily":"Verlag-Book","textTransform":"uppercase"}},"description":{"text":"Des manifestants \u00e0 El Paso r\u00e9clamaient mercredi l\u2019interdiction des fusils d\u2019assaut.","styles":{"fontSize":14,"padding":"{4, 16, 16, 16}","fontFamily":"Verlag-Book","color":"8d8d8d","lineHeight":0.9}},"fullscreen":true},{"kind":"text","text":{"text":"L\u2019ancien vice-pr\u00e9sident de Barack Obama a ajout\u00e9 que s\u2019il \u00e9tait \u00e9lu, il r\u00e9tablirait l\u2019interdiction des fusils d\u2019assaut appliqu\u00e9e aux \u00c9tats-Unis entre 1994 et 2004.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","class":["subhead"],"text":{"text":"Mise en garde de la NRA","styles":{"fontSize":24,"fontFamily":"Verlag-Bold","padding":"{18,16,14,16}","lineHeight":1,"hyphens":"none"}}},{"kind":"text","text":{"text":"Mais pour l\u2019instant, parlementaires r\u00e9publicains et d\u00e9mocrates semblent encore tr\u00e8s loin de parvenir \u00e0 un accord autour des armes \u00e0 feu, responsables de pr\u00e8s de 40\u00a0000 morts aux \u00c9tats-Unis en 2018 (en incluant les suicides). ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"ad","styles":{"backgroundColor":"d2d2d2","padding":"{8,0,26,0}","margin":"{32,0,32,0}"},"title":{"text":"Publicit\u00e9","styles":{"fontSize":12,"fontFamily":"MuseoSlab-700","textAlign":"center","color":"686868","padding":"{0,0,8,0}","textTransform":"uppercase"}},"ad":{"creative":{"type":"banner","unitId":"\/21686484267\/LPM\/LPM_International","sizes":[[300,50],[320,50],[300,100],[300,250],[300,600]]},"customTargeting":{"publisherContext":{"typePage":"article","articleId":"cf08ab872bee3291a3aaffbc0c376441","sectionName":"etats-unis","position":"pos3"}}}},{"kind":"text","text":{"text":"En pleines vacances parlementaires, plus de 200 maires des deux partis\u00a0\u2013\u00a0dont ceux d\u2019El Paso et de Dayton\u00a0\u2013\u00a0ont demand\u00e9 jeudi que le S\u00e9nat, \u00e0 majorit\u00e9 r\u00e9publicaine, se r\u00e9unisse en urgence pour voter sur deux mesures d\u00e9j\u00e0 approuv\u00e9es en f\u00e9vrier par la Chambre des repr\u00e9sentants, contr\u00f4l\u00e9e par les d\u00e9mocrates.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"La pr\u00e9sidente de la Chambre, Nancy Pelosi, a elle \u00e9crit directement \u00e0 Donald Trump pour lui demander qu\u2019il emploie ses pr\u00e9rogatives pr\u00e9sidentielles et convoque le S\u00e9nat afi
2019-09-03 12:19:24.427 D: n qu\u2019il vote sur ces textes, qui pr\u00e9voient d\u2019\u00e9tendre les contr\u00f4les des ant\u00e9c\u00e9dents des acheteurs et d\u2019allonger \u00e0 dix jours la dur\u00e9e entre ce contr\u00f4le et la livraison des armes.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Ces mesures n\u2019ont jamais \u00e9t\u00e9 inscrites \u00e0 l\u2019ordre du jour du S\u00e9nat par le chef de la majorit\u00e9, Mitch McConnell, habile strat\u00e8ge qui sait d\u2019ordinaire finement jauger les chances de passage d\u2019un texte. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"photo","class":["under"],"styles":{"margin":"{32,0,24,0}","borderWidth":"{0,0,1,0}","borderColor":"dedede"},"photo":{"url":"https:\/\/mobile-img.lpcdn.ca\/828x\/9f728bd1-b9fa-11e9-a65c-0eda3a42da3c.webp","width":828,"height":552},"layout":"under","credit":{"text":"AP","styles":{"padding":"{16,16,8,16}","color":"8d8d8d","fontSize":10,"fontFamily":"Verlag-Book","textTransform":"uppercase"}},"description":{"text":"Mitch McConnell","styles":{"fontSize":14,"padding":"{4, 16, 16, 16}","fontFamily":"Verlag-Book","color":"8d8d8d","lineHeight":0.9}},"fullscreen":true},{"kind":"text","text":{"text":"Or les parlementaires r\u00e9publicains sont largement oppos\u00e9s \u00e0 toute loi entravant selon eux le droit constitutionnel des Am\u00e9ricains \u00e0 porter une arme. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"ad","styles":{"backgroundColor":"d2d2d2","padding":"{8,0,26,0}","margin":"{32,0,32,0}"},"title":{"text":"Publicit\u00e9","styles":{"fontSize":12,"fontFamily":"MuseoSlab-700","textAlign":"center","color":"686868","padding":"{0,0,8,0}","textTransform":"uppercase"}},"ad":{"creative":{"type":"banner","unitId":"\/21686484267\/LPM\/LPM_International","sizes":[[300,50],[320,50],[300,100],[300,250],[300,600]]},"customTargeting":{"publisherContext":{"typePage":"article","articleId":"cf08ab872bee3291a3aaffbc0c376441","sectionName":"etats-unis","position":"pos4"}}}},{"kind":"text","text":{"text":"M.\u00a0McConnell a bien d\u00e9clar\u00e9 jeudi que le S\u00e9nat se pencherait sur des propositions, mais pas avant la rentr\u00e9e parlementaire.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"\u00ab\u00a0Quand nous rentrerons, j\u2019esp\u00e8re que nous pourrons nous mettre d\u2019accord et adopter quelque chose\u00a0\u00bb, a-t-il avanc\u00e9 sur une radio, sans pr\u00e9ciser quelle mesure avait sa pr\u00e9f\u00e9rence.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Apr\u00e8s plusieurs allers-retours sur le sujet, Donald Trump a fait savoir mercredi qu\u2019il \u00e9tait favorable \u00e0 une disposition qui permettrait de confisquer les armes de personnes souffrant de troubles mentaux. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Mais, a-t-il soulign\u00e9, il n\u2019y a \u00ab\u00a0pas d\u2019app\u00e9tit politique\u00a0\u00bb \u00e0 Washington pour une interdiction des fusils d\u2019assaut. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Selon le Washington Post, le chef du puissant lobby des armes NRA Wayne LaPierre s\u2019est entretenu directement avec Donald Trump en d\u00e9but de semaine pour lui rappeler que sa base de supporteurs n\u2019appr\u00e9cierait pas le passage de mesures plus strictes sur les ant\u00e9c\u00e9dents.\u00a0\u00a0","styles":{"fontSize":20,
2019-09-03 12:19:24.428 D: "padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"},"inlineStyles":[{"n":"fontStyle","v":"italic","s":9,"e":24}]}},{"kind":"text","text":{"text":"Sans confirmer cette conversation avec le r\u00e9publicain, qui avait re\u00e7u 30 millions de dollars de la NRA pour sa campagne en 2016, M.\u00a0LaPierre a publi\u00e9 jeudi un communiqu\u00e9 aux airs de mise en garde\u00a0: \u00ab\u00a0Je peux confirmer que la NRA s\u2019oppose \u00e0 toute loi qui empi\u00e9terait injustement sur les droits des honn\u00eates citoyens\u00a0\u00bb. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"userAction","styles":{"color":"262626","padding":"{35,44,35,44}","margin":"{0,0,0,0}"}},{"kind":"text","text":{"text":"Propos\u00e9s par notre algorithme","styles":{"fontSize":13,"fontFamily":"Rubrik-Medium","color":"686868","padding":"{10,16,0,16}","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","styles":{"borderColor":"d8d8d8","borderWidth":"{0,0,1,0}"},"text":{"text":"ARTICLES SIMILAIRES","styles":{"fontSize":20,"fontFamily":"Rubrik-SemiBold","padding":"{3,16,15,16}","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"post","styles":{"borderColor":"d8d8d8","borderWidth":"{0,0,1,0}"},"post":{"id":"1f3a516b11c53669a5f0a26bb985b3d6","kind":"stdPost","selfLink":"https:\/\/api.rb-fe.nuglif.net\/posts\/1f3a516b11c53669a5f0a26bb985b3d6?ts=1565580177","published":"2019-08-09T09:46:32-04:00","modified":"2019-08-09T18:14:29-04:00","sharing":{"title":"Trump se dit favorable \u00e0 des mesures \u00absens\u00e9es\u00bb sur les armes \u00e0 feu","url":"https:\/\/lp.ca\/4NtVQm"},"title":{"text":"Trump se dit favorable \u00e0 des mesures \u00absens\u00e9es\u00bb sur les armes \u00e0 feu","styles":{"color":"000000","fontSize":16,"fontFamily":"Verlag-Bold"}},"visual":{"kind":"photo","url":"https:\/\/mobile-img.lpcdn.ca\/828x\/r3996\/2cf64ca7-bab8-11e9-a65c-0eda3a42da3c.webp"},"section":{"text":"\u00c9tats-Unis","styles":{"backgroundColor":"5A79A0","fontFamily":"Verlag-Bold","color":"ffffff","padding":"{4,8,4,8}","textTransform":"uppercase"}},"class":["regular"]}},{"kind":"post","styles":{"borderColor":"d8d8d8","borderWidth":"{0,0,1,0}"},"post":{"id":"c471d628ebcb395b990844c59c6665b2","kind":"stdPost","selfLink":"https:\/\/api.rb-fe.nuglif.net\/posts\/c471d628ebcb395b990844c59c6665b2?ts=1565567484","published":"2019-08-08T18:30:39-04:00","sharing":{"title":"Tueries aux \u00c9.-U.: la NRA s\u2019oppose \u00e0 des r\u00e9formes sur les ventes d\u2019armes","url":"https:\/\/lp.ca\/pjtCOa"},"title":{"text":"Tueries aux \u00c9.-U.: la NRA s\u2019oppose \u00e0 des r\u00e9formes sur les ventes d\u2019armes","styles":{"color":"000000","fontSize":16,"fontFamily":"Verlag-Bold"}},"visual":{"kind":"photo","url":"https:\/\/mobile-img.lpcdn.ca\/828x\/r3996\/f4d2cef8-ba2b-11e9-a65c-0eda3a42da3c.webp"},"section":{"text":"\u00c9tats-Unis","styles":{"backgroundColor":"5A79A0","fontFamily":"Verlag-Bold","color":"ffffff","padding":"{4,8,4,8}","textTransform":"uppercase"}},"class":["regular"]}},{"kind":"post","styles":{"borderColor":"d8d8d8","borderWidth":"{0,0,1,0}"},"post":{"id":"ebe14e0b36ba31a3b02d227b8ce5ac91","kind":"stdPost","selfLink":"https:\/\/api.rb-fe.nuglif.net\/posts\/ebe14e0b36ba31a3b02d227b8ce5ac91?ts=1565579427","published":"2019-08-09T16:33:38-04:00","modified":"2019-08-09T17:04:26-04:00","sharing":{"title":"Le tireur d\u2019El Paso a avou\u00e9 avoir voulu cibler des \u00abMexicains\u00bb ","url":"https:\/\/lp.ca\/aXxv0r"},"title":{"text":"Le tireur d\u2019El Paso a avou\u00e9 avoir voulu cibler des \u00abMexicains\u00bb ","styles":{"color":"000000","fontSize":16,"fontFamily":"Verlag-Bold"}},"visual":{"kind":"video","thumbnail":"https:\/\/mobile-img.lpcdn.ca\/828x\/408e5e91-bae9-11e9-a65c-0eda3a42da3c.webp","url":"https:\/\/bellvps1.content.video.llnw.net\/smedia\/e1b3e24ecb944abd8f4ed823a0b76ddc\/4O\/uQ1Dd2m10Zs1ztMjR3_x-6L9o7r_sD-dca24o1VFE\/tuerie_del_pa
2019-09-03 12:19:24.428 D: so_le_bilan_salourdit_1-5d4876a6b5471c0001b2054b_aug_05_2019_18_34_54-47aeb31390c857a7ca075895ce8cde3fc2653144.m3u8","width":16,"height":9,"control":true,"displayedDuration":78},"section":{"text":"\u00c9tats-Unis","styles":{"backgroundColor":"5A79A0","fontFamily":"Verlag-Bold","color":"ffffff","padding":"{4,8,4,8}","textTransform":"uppercase"}},"class":["regular"]}}]}}
2019-09-03 12:19:24.428 D: <-- END HTTP (20371-byte body)
2019-09-03 12:19:24.437 D: raw response: Response{protocol=h2, code=200, message=, url=https://api.rb-fe.nuglif.net/posts/cf08ab872bee3291a3aaffbc0c376441?ts=1565278077}
2019-09-03 12:19:24.438 D: raw response network: Response{protocol=h2, code=200, message=, url=https://api.rb-fe.nuglif.net/posts/cf08ab872bee3291a3aaffbc0c376441?ts=1565278077}
2019-09-03 12:19:24.438 D: raw response cache: null

And here is the HTTP dump of the first request which does store a binary response:

2019-09-03 12:22:30.419 D: --> GET https://api.rb-fe.nuglif.net/posts/cf08ab872bee3291a3aaffbc0c376441?ts=1565278077
2019-09-03 12:22:30.419 D: Accept: application/vnd.nuglif.rubicon.card+json;modules="ad,audio,author,button,collapsible,gallery,photo,post,publicationDates,text,userAction,video,web"
2019-09-03 12:22:30.419 D: --> END GET
2019-09-03 12:22:30.700 D: <-- 200 https://api.rb-fe.nuglif.net/posts/cf08ab872bee3291a3aaffbc0c376441?ts=1565278077 (280ms)
2019-09-03 12:22:30.700 D: date: Tue, 03 Sep 2019 16:22:31 GMT
2019-09-03 12:22:30.700 D: content-type: application/vnd.nuglif.rubicon.card+json
2019-09-03 12:22:30.700 D: server: openresty/1.15.8.1
2019-09-03 12:22:30.700 D: vary: Accept-Encoding
2019-09-03 12:22:30.700 D: x-correlation-id: 5d6e93474f8f07.45287086
2019-09-03 12:22:30.700 D: last-modified: Sun, 11 Aug 2019 23:49:40 GMT
2019-09-03 12:22:30.700 D: etag: W/"cf08ab872bee3291a3aaffbc0c376441-1565567380"
2019-09-03 12:22:30.700 D: vary: Accept
2019-09-03 12:22:30.700 D: cache-control: public, max-age=60, no-transform
2019-09-03 12:22:30.706 D: {"data":{"id":"cf08ab872bee3291a3aaffbc0c376441","kind":"stdPost","selfLink":"https:\/\/api.rb-fe.nuglif.net\/posts\/cf08ab872bee3291a3aaffbc0c376441?ts=1565567380","published":"2019-08-08T11:22:47-04:00","modified":"2019-08-08T18:27:45-04:00","section":{"color":"5A79A0","text":{"text":"\u00c9tats-Unis","styles":{"backgroundColor":"5A79A0","color":"ffffff","padding":"{10,16,10,16}","textTransform":"uppercase","fontSize":15,"fontFamily":"Verlag-Bold"}}},"sharing":{"title":"En plein deuil, l\u2019Am\u00e9rique toujours divis\u00e9e sur les armes \u00e0 feu","url":"https:\/\/lp.ca\/hBMI7p"},"items":[{"kind":"video","class":["visual"],"styles":{"margin":"{0,0,32,0}"},"video":{"url":"https:\/\/bellvps1.content.video.llnw.net\/smedia\/e1b3e24ecb944abd8f4ed823a0b76ddc\/q1\/CRdoZicO1K97wjL5ZMAt6UWa7hMTduvMk12KD5CrI\/en_plein_deuil_lamerique_toujours_divise-5d4c53c816e22d000129c7a8_aug_08_2019_17_18_09-019f18abf140b9c3123d558a4488ae8eeedabe63.m3u8","width":1024,"height":576,"thumbnail":"https:\/\/mobile-img.lpcdn.ca\/828x\/r51b1\/b0dd2037-b9f9-11e9-a65c-0eda3a42da3c.webp","adTagUrl":"https:\/\/pubads.g.doubleclick.net\/gampad\/ads?gdfp_req=1&env=vp&unviewed_position_start=1&sz=640x480&iu=%2F21686484267%2FLPM%2FLPM_International&ad_rule=1&cust_params=typePage%3Darticle%26articleId%3Dcf08ab872bee3291a3aaffbc0c376441%26sectionName%3Detats-unis%26videoDuration%3Dvideo61-90&hl=fr","duration":71,"start":0,"autoplay":false,"loop":false}},{"kind":"text","class":["title"],"text":{"text":"En plein deuil, l\u2019Am\u00e9rique toujours divis\u00e9e sur les armes \u00e0 feu","styles":{"fontSize":34,"fontFamily":"Verlag-Bold","padding":"{16,16,10,16}","lineHeight":0.9,"hyphens":"none"}}},{"kind":"publicationDates","styles":{"padding":"{0,16,2,16}","color":"686868"},"published":"2019-08-08T11:22:47-04:00","modified":"2019-08-08T18:27:45-04:00"},{"kind":"text","class":["lead"],"text":{"text":"(El Paso) Cinq jours apr\u00e8s deux fusillades meurtri\u00e8res, le d\u00e9bat sur l\u2019acc\u00e8s aux armes continuait jeudi \u00e0 tourner \u00e0 vide aux \u00c9tats-Unis, la visite de Donald Trump dans les villes endeuill\u00e9es ayant de nouveau illustr\u00e9 les profondes divisions de la soci\u00e9t\u00e9 am\u00e9ricaine. ","styles":{"fontSize":22,"padding":"{10,16,10,16}","fontFamily":"Verlag-Bold","lineHeight":1,"hyphens":"auto"}}},{"kind":"author","styles":{"backgroundColor":"#dedede","padding":"{10,16,10,16}","margin":"{16,16,16,16}"},"name":{"text":"Gilles CLARENNE avec Elodie CUZIN \u00e0 Washington","styles":{"fontSize":14,"textTransform":"uppercase","fontFamily":"Verlag-Black"}},"agency":{"text":"Agence France-Presse","styles":{"fontSize":14,"fontFamily":"Verlag-Book"}}},{"kind":"text","text":{"text":"Le d\u00e9bat persistait aussi sur ce qui aurait pu \u00eatre fait pour emp\u00eacher les deux tueries, perp\u00e9tr\u00e9es \u00e0 13\u00a0heures d\u2019intervalle \u00e0 El Paso, au Texas, et Dayton, dans l\u2019Ohio, par deux jeunes hommes arm\u00e9s de fusils d\u2019assaut qui ont fait 31 morts.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Inqui\u00e8te, la m\u00e8re du tireur d\u2019El Paso avait, selon les m\u00e9dias, pr\u00e9venu la police que ce jeune Blanc aux motivations racistes poss\u00e9dait un fusil d\u2019assaut des semaines avant qu\u2019il n\u2019abatte 22 personnes, en majorit\u00e9 hispaniques. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"},"inlineStyles":[{"n":"color","v":"007aff","s":0,"e":61},{"n":"textDecoration","v":"underline","s":0,"e":61}],"inlineActions":[{"a":{"kind":"openUrl","url":"https:\/\/www.lapresse.ca\/international\/etats-unis\/201908\/08\/01-5236678-el-paso-la-mere-du-tireur-setait-inquietee-aupres-de-la-police.php"},"s":0,"e":61}]}},{"kind":"ad","styles":{"backgroundColor":"d2d2d2","padding":"{8,0,26,0}","margin":"{32,0,32,0}
2019-09-03 12:22:30.706 D: "},"title":{"text":"Publicit\u00e9","styles":{"fontSize":12,"fontFamily":"MuseoSlab-700","textAlign":"center","color":"686868","padding":"{0,0,8,0}","textTransform":"uppercase"}},"ad":{"creative":{"type":"banner","unitId":"\/21686484267\/LPM\/LPM_International","sizes":[[300,50],[320,50],[300,100],[300,250],[300,600]]},"customTargeting":{"publisherContext":{"typePage":"article","articleId":"cf08ab872bee3291a3aaffbc0c376441","sectionName":"etats-unis","position":"pos1"}}}},{"kind":"text","text":{"text":"Un agent lui avait r\u00e9pondu que son fils \u00e9tant majeur, la situation n\u2019avait rien d\u2019ill\u00e9gale. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"photo","class":["under"],"styles":{"margin":"{32,0,24,0}","borderWidth":"{0,0,1,0}","borderColor":"dedede"},"photo":{"url":"https:\/\/mobile-img.lpcdn.ca\/828x\/150abbba-b9fa-11e9-a65c-0eda3a42da3c.webp","width":828,"height":545},"layout":"under","credit":{"text":"REUTERS","styles":{"padding":"{16,16,8,16}","color":"8d8d8d","fontSize":10,"fontFamily":"Verlag-Book","textTransform":"uppercase"}},"description":{"text":"Donald Trump s\u2019est entretenu mercredi avec des membres des forces de l\u2019ordre \u00e0 El Paso.","styles":{"fontSize":14,"padding":"{4, 16, 16, 16}","fontFamily":"Verlag-Book","color":"8d8d8d","lineHeight":0.9}},"fullscreen":true},{"kind":"text","text":{"text":"\u00c0 Dayton, dans l\u2019Ohio, les motivations de l\u2019assaillant, dont la s\u0153ur figure parmi les neuf victimes tu\u00e9es en 30 secondes, restent incertaines.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Lors d\u2019une visite millim\u00e9tr\u00e9e, Donald Trump s\u2019est rendu mercredi dans ces deux villes meurtries.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Pour justifier la tenue \u00e0 distance des m\u00e9dias, la Maison-Blanche a invoqu\u00e9 le respect pour les victimes et leurs familles.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Mais le pr\u00e9sident r\u00e9publicain a plus tard tweet\u00e9 des vid\u00e9os montrant un personnel hospitalier souriant, accompagn\u00e9es d\u2019une musique dramatique au pur go\u00fbt hollywoodien. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Dans une s\u00e9quence film\u00e9e par un particulier, Donald Trump s\u2019\u00e9loigne rapidement\u00a0\u2013\u00a0apparemment insensible \u00e0 la solennit\u00e9 du moment\u00a0\u2013\u00a0des mots d\u2019hommage adress\u00e9s aux m\u00e9decins pour leur vanter la taille de la foule qui l\u2019avait attendu dans la m\u00eame ville en f\u00e9vrier.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"ad","styles":{"backgroundColor":"d2d2d2","padding":"{8,0,26,0}","margin":"{32,0,32,0}"},"title":{"text":"Publicit\u00e9","styles":{"fontSize":12,"fontFamily":"MuseoSlab-700","textAlign":"center","color":"686868","padding":"{0,0,8,0}","textTransform":"uppercase"}},"ad":{"creative":{"type":"banner","unitId":"\/21686484267\/LPM\/LPM_International","sizes":[[300,50],[320,50],[300,100],[300,250],[300,600]]},"customTargeting":{"publisherContext":{"typePage":"article","articleId":"cf08ab872bee3291a3aaffbc0c376441","sectionName":"etats-unis","position":"pos2"}}}},{"kind":"text","text":{"text":"\u00ab\u00a0Trump a r\u00e9ussi hier (mercredi) \u00e0 faire de ses visites un \u00e9v\u00e9nement centr\u00e9 sur sa personne\u00a0\u00bb, s\u2019est indign\u00e9 le parti d\u00e9mocrate.\u00a0\u00a0","styles
2019-09-03 12:22:30.706 D: ":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Chez les manifestants anti-Trump \u00e0 El Paso, on a rappel\u00e9 ses propos incendiaires sur l\u2019immigration clandestine hispanique, qu\u2019il qualifie r\u00e9guli\u00e8rement d\u2019\u00ab\u00a0invasion\u00a0\u00bb. Un terme repris dans un manifeste du tireur publi\u00e9 en ligne avant son massacre. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"\u00ab\u00a0Tout ce que le pr\u00e9sident dit et fait encourage les partisans de la supr\u00e9matie blanche\u00a0\u00bb, a d\u00e9clar\u00e9 jeudi Joe Biden, favori de la primaire d\u00e9mocrate pour la pr\u00e9sidentielle de 2020.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"photo","class":["under"],"styles":{"margin":"{32,0,24,0}","borderWidth":"{0,0,1,0}","borderColor":"dedede"},"photo":{"url":"https:\/\/mobile-img.lpcdn.ca\/828x\/28e6d244-b9f0-11e9-a65c-0eda3a42da3c.webp","width":828,"height":548},"layout":"under","credit":{"text":"AP","styles":{"padding":"{16,16,8,16}","color":"8d8d8d","fontSize":10,"fontFamily":"Verlag-Book","textTransform":"uppercase"}},"description":{"text":"Des manifestants \u00e0 El Paso r\u00e9clamaient mercredi l\u2019interdiction des fusils d\u2019assaut.","styles":{"fontSize":14,"padding":"{4, 16, 16, 16}","fontFamily":"Verlag-Book","color":"8d8d8d","lineHeight":0.9}},"fullscreen":true},{"kind":"text","text":{"text":"L\u2019ancien vice-pr\u00e9sident de Barack Obama a ajout\u00e9 que s\u2019il \u00e9tait \u00e9lu, il r\u00e9tablirait l\u2019interdiction des fusils d\u2019assaut appliqu\u00e9e aux \u00c9tats-Unis entre 1994 et 2004.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","class":["subhead"],"text":{"text":"Mise en garde de la NRA","styles":{"fontSize":24,"fontFamily":"Verlag-Bold","padding":"{18,16,14,16}","lineHeight":1,"hyphens":"none"}}},{"kind":"text","text":{"text":"Mais pour l\u2019instant, parlementaires r\u00e9publicains et d\u00e9mocrates semblent encore tr\u00e8s loin de parvenir \u00e0 un accord autour des armes \u00e0 feu, responsables de pr\u00e8s de 40\u00a0000 morts aux \u00c9tats-Unis en 2018 (en incluant les suicides). ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"ad","styles":{"backgroundColor":"d2d2d2","padding":"{8,0,26,0}","margin":"{32,0,32,0}"},"title":{"text":"Publicit\u00e9","styles":{"fontSize":12,"fontFamily":"MuseoSlab-700","textAlign":"center","color":"686868","padding":"{0,0,8,0}","textTransform":"uppercase"}},"ad":{"creative":{"type":"banner","unitId":"\/21686484267\/LPM\/LPM_International","sizes":[[300,50],[320,50],[300,100],[300,250],[300,600]]},"customTargeting":{"publisherContext":{"typePage":"article","articleId":"cf08ab872bee3291a3aaffbc0c376441","sectionName":"etats-unis","position":"pos3"}}}},{"kind":"text","text":{"text":"En pleines vacances parlementaires, plus de 200 maires des deux partis\u00a0\u2013\u00a0dont ceux d\u2019El Paso et de Dayton\u00a0\u2013\u00a0ont demand\u00e9 jeudi que le S\u00e9nat, \u00e0 majorit\u00e9 r\u00e9publicaine, se r\u00e9unisse en urgence pour voter sur deux mesures d\u00e9j\u00e0 approuv\u00e9es en f\u00e9vrier par la Chambre des repr\u00e9sentants, contr\u00f4l\u00e9e par les d\u00e9mocrates.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"La pr\u00e9sidente de la Chambre, Nancy Pelosi, a elle \u00e9crit directement \u00e0 Donald Trump pour lui demander qu\u2019il emploie ses pr\u00e9rogatives pr\u00e9sidentielles et convoque le S\u00e9nat afi
2019-09-03 12:22:30.706 D: n qu\u2019il vote sur ces textes, qui pr\u00e9voient d\u2019\u00e9tendre les contr\u00f4les des ant\u00e9c\u00e9dents des acheteurs et d\u2019allonger \u00e0 dix jours la dur\u00e9e entre ce contr\u00f4le et la livraison des armes.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Ces mesures n\u2019ont jamais \u00e9t\u00e9 inscrites \u00e0 l\u2019ordre du jour du S\u00e9nat par le chef de la majorit\u00e9, Mitch McConnell, habile strat\u00e8ge qui sait d\u2019ordinaire finement jauger les chances de passage d\u2019un texte. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"photo","class":["under"],"styles":{"margin":"{32,0,24,0}","borderWidth":"{0,0,1,0}","borderColor":"dedede"},"photo":{"url":"https:\/\/mobile-img.lpcdn.ca\/828x\/9f728bd1-b9fa-11e9-a65c-0eda3a42da3c.webp","width":828,"height":552},"layout":"under","credit":{"text":"AP","styles":{"padding":"{16,16,8,16}","color":"8d8d8d","fontSize":10,"fontFamily":"Verlag-Book","textTransform":"uppercase"}},"description":{"text":"Mitch McConnell","styles":{"fontSize":14,"padding":"{4, 16, 16, 16}","fontFamily":"Verlag-Book","color":"8d8d8d","lineHeight":0.9}},"fullscreen":true},{"kind":"text","text":{"text":"Or les parlementaires r\u00e9publicains sont largement oppos\u00e9s \u00e0 toute loi entravant selon eux le droit constitutionnel des Am\u00e9ricains \u00e0 porter une arme. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"ad","styles":{"backgroundColor":"d2d2d2","padding":"{8,0,26,0}","margin":"{32,0,32,0}"},"title":{"text":"Publicit\u00e9","styles":{"fontSize":12,"fontFamily":"MuseoSlab-700","textAlign":"center","color":"686868","padding":"{0,0,8,0}","textTransform":"uppercase"}},"ad":{"creative":{"type":"banner","unitId":"\/21686484267\/LPM\/LPM_International","sizes":[[300,50],[320,50],[300,100],[300,250],[300,600]]},"customTargeting":{"publisherContext":{"typePage":"article","articleId":"cf08ab872bee3291a3aaffbc0c376441","sectionName":"etats-unis","position":"pos4"}}}},{"kind":"text","text":{"text":"M.\u00a0McConnell a bien d\u00e9clar\u00e9 jeudi que le S\u00e9nat se pencherait sur des propositions, mais pas avant la rentr\u00e9e parlementaire.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"\u00ab\u00a0Quand nous rentrerons, j\u2019esp\u00e8re que nous pourrons nous mettre d\u2019accord et adopter quelque chose\u00a0\u00bb, a-t-il avanc\u00e9 sur une radio, sans pr\u00e9ciser quelle mesure avait sa pr\u00e9f\u00e9rence.\u00a0\u00a0","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Apr\u00e8s plusieurs allers-retours sur le sujet, Donald Trump a fait savoir mercredi qu\u2019il \u00e9tait favorable \u00e0 une disposition qui permettrait de confisquer les armes de personnes souffrant de troubles mentaux. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Mais, a-t-il soulign\u00e9, il n\u2019y a \u00ab\u00a0pas d\u2019app\u00e9tit politique\u00a0\u00bb \u00e0 Washington pour une interdiction des fusils d\u2019assaut. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","text":{"text":"Selon le Washington Post, le chef du puissant lobby des armes NRA Wayne LaPierre s\u2019est entretenu directement avec Donald Trump en d\u00e9but de semaine pour lui rappeler que sa base de supporteurs n\u2019appr\u00e9cierait pas le passage de mesures plus strictes sur les ant\u00e9c\u00e9dents.\u00a0\u00a0","styles":{"fontSize":20,
2019-09-03 12:22:30.706 D: "padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"},"inlineStyles":[{"n":"fontStyle","v":"italic","s":9,"e":24}]}},{"kind":"text","text":{"text":"Sans confirmer cette conversation avec le r\u00e9publicain, qui avait re\u00e7u 30 millions de dollars de la NRA pour sa campagne en 2016, M.\u00a0LaPierre a publi\u00e9 jeudi un communiqu\u00e9 aux airs de mise en garde\u00a0: \u00ab\u00a0Je peux confirmer que la NRA s\u2019oppose \u00e0 toute loi qui empi\u00e9terait injustement sur les droits des honn\u00eates citoyens\u00a0\u00bb. ","styles":{"fontSize":20,"padding":"{10,16,10,16}","fontFamily":"Calluna-Regular","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"userAction","styles":{"color":"262626","padding":"{35,44,35,44}","margin":"{0,0,0,0}"}},{"kind":"text","text":{"text":"Propos\u00e9s par notre algorithme","styles":{"fontSize":13,"fontFamily":"Rubrik-Medium","color":"686868","padding":"{10,16,0,16}","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"text","styles":{"borderColor":"d8d8d8","borderWidth":"{0,0,1,0}"},"text":{"text":"ARTICLES SIMILAIRES","styles":{"fontSize":20,"fontFamily":"Rubrik-SemiBold","padding":"{3,16,15,16}","lineHeight":1.1,"hyphens":"auto"}}},{"kind":"post","styles":{"borderColor":"d8d8d8","borderWidth":"{0,0,1,0}"},"post":{"id":"1f3a516b11c53669a5f0a26bb985b3d6","kind":"stdPost","selfLink":"https:\/\/api.rb-fe.nuglif.net\/posts\/1f3a516b11c53669a5f0a26bb985b3d6?ts=1565580177","published":"2019-08-09T09:46:32-04:00","modified":"2019-08-09T18:14:29-04:00","sharing":{"title":"Trump se dit favorable \u00e0 des mesures \u00absens\u00e9es\u00bb sur les armes \u00e0 feu","url":"https:\/\/lp.ca\/4NtVQm"},"title":{"text":"Trump se dit favorable \u00e0 des mesures \u00absens\u00e9es\u00bb sur les armes \u00e0 feu","styles":{"color":"000000","fontSize":16,"fontFamily":"Verlag-Bold"}},"visual":{"kind":"photo","url":"https:\/\/mobile-img.lpcdn.ca\/828x\/r3996\/2cf64ca7-bab8-11e9-a65c-0eda3a42da3c.webp"},"section":{"text":"\u00c9tats-Unis","styles":{"backgroundColor":"5A79A0","fontFamily":"Verlag-Bold","color":"ffffff","padding":"{4,8,4,8}","textTransform":"uppercase"}},"class":["regular"]}},{"kind":"post","styles":{"borderColor":"d8d8d8","borderWidth":"{0,0,1,0}"},"post":{"id":"c471d628ebcb395b990844c59c6665b2","kind":"stdPost","selfLink":"https:\/\/api.rb-fe.nuglif.net\/posts\/c471d628ebcb395b990844c59c6665b2?ts=1565567484","published":"2019-08-08T18:30:39-04:00","sharing":{"title":"Tueries aux \u00c9.-U.: la NRA s\u2019oppose \u00e0 des r\u00e9formes sur les ventes d\u2019armes","url":"https:\/\/lp.ca\/pjtCOa"},"title":{"text":"Tueries aux \u00c9.-U.: la NRA s\u2019oppose \u00e0 des r\u00e9formes sur les ventes d\u2019armes","styles":{"color":"000000","fontSize":16,"fontFamily":"Verlag-Bold"}},"visual":{"kind":"photo","url":"https:\/\/mobile-img.lpcdn.ca\/828x\/r3996\/f4d2cef8-ba2b-11e9-a65c-0eda3a42da3c.webp"},"section":{"text":"\u00c9tats-Unis","styles":{"backgroundColor":"5A79A0","fontFamily":"Verlag-Bold","color":"ffffff","padding":"{4,8,4,8}","textTransform":"uppercase"}},"class":["regular"]}},{"kind":"post","styles":{"borderColor":"d8d8d8","borderWidth":"{0,0,1,0}"},"post":{"id":"ebe14e0b36ba31a3b02d227b8ce5ac91","kind":"stdPost","selfLink":"https:\/\/api.rb-fe.nuglif.net\/posts\/ebe14e0b36ba31a3b02d227b8ce5ac91?ts=1565579427","published":"2019-08-09T16:33:38-04:00","modified":"2019-08-09T17:04:26-04:00","sharing":{"title":"Le tireur d\u2019El Paso a avou\u00e9 avoir voulu cibler des \u00abMexicains\u00bb ","url":"https:\/\/lp.ca\/aXxv0r"},"title":{"text":"Le tireur d\u2019El Paso a avou\u00e9 avoir voulu cibler des \u00abMexicains\u00bb ","styles":{"color":"000000","fontSize":16,"fontFamily":"Verlag-Bold"}},"visual":{"kind":"video","thumbnail":"https:\/\/mobile-img.lpcdn.ca\/828x\/408e5e91-bae9-11e9-a65c-0eda3a42da3c.webp","url":"https:\/\/bellvps1.content.video.llnw.net\/smedia\/e1b3e24ecb944abd8f4ed823a0b76ddc\/4O\/uQ1Dd2m10Zs1ztMjR3_x-6L9o7r_sD-dca24o1VFE\/tuerie_del_pa
2019-09-03 12:22:30.706 D: so_le_bilan_salourdit_1-5d4876a6b5471c0001b2054b_aug_05_2019_18_34_54-47aeb31390c857a7ca075895ce8cde3fc2653144.m3u8","width":16,"height":9,"control":true,"displayedDuration":78},"section":{"text":"\u00c9tats-Unis","styles":{"backgroundColor":"5A79A0","fontFamily":"Verlag-Bold","color":"ffffff","padding":"{4,8,4,8}","textTransform":"uppercase"}},"class":["regular"]}}]}}
2019-09-03 12:22:30.706 D: <-- END HTTP (20371-byte body)
2019-09-03 12:22:30.716 D: raw response: Response{protocol=h2, code=200, message=, url=https://api.rb-fe.nuglif.net/posts/cf08ab872bee3291a3aaffbc0c376441?ts=1565278077}
2019-09-03 12:22:30.716 D: raw response network: Response{protocol=h2, code=200, message=, url=https://api.rb-fe.nuglif.net/posts/cf08ab872bee3291a3aaffbc0c376441?ts=1565278077}
2019-09-03 12:22:30.716 D: raw response cache: null

So, do you have any idea what causes the problem? I have no idea what would cause the issue.

It is unfortunate that this problem cannot be replicate outside our Wi-Fi. :(

Do you have any middleboxes on your WiFi that could be interfering?

I think I found the cause of the bug.
In okhttp3.internal.cache.CacheInterceptor.combine() we combine the headers from the cachedResponseand the networkResponse.

Note that in the first response (the response that is cached), the header has twice vary: vary: Accept-Encoding and vary: Accept

As such, here is the content of cachedHeaders.namesAndValues:

namesAndValues = {String[20]@12077} 
 0 = "date"
 1 = "Wed, 04 Sep 2019 13:58:33 GMT"
 2 = "content-type"
 3 = "application/vnd.nuglif.rubicon.card+json"
 4 = "server"
 5 = "openresty/1.15.8.1"
 6 = "vary"
 7 = "Accept-Encoding"
 8 = "x-correlation-id"
 9 = "5d6fc309725f72.26677340"
 10 = "last-modified"
 11 = "Sun, 11 Aug 2019 23:49:40 GMT"
 12 = "etag"
 13 = "W/"cf08ab872bee3291a3aaffbc0c376441-1565567380""
 14 = "vary"
 15 = "Accept"
 16 = "cache-control"
 17 = "public, max-age=60, no-transform"
 18 = "content-encoding"
 19 = "gzip"

The problem is that cachedHeaders.names().indices returns 0..8, where it should return 0..9.
It return 0..8 because vary is inserted twice in the names() set.

And guess what, the value at cachedHeaders.name[9] is content-encoding. So combine() results in a header that does not contain content-encoding (and so Retrofit tries to parse the gzip value without unzipping it first)

I have no idea how to fix the issue. Should we avoid duplicate headers in the cache? Of should Header be refactor to take care of this case?

@thierryd fantastic investigation. We鈥檒l fix this ASAP and cut a patch release.

Was this page helpful?
0 / 5 - 0 ratings