{"action":"created","issue":{"url":"https://api.github.com/repos/bumptech/glide/issues/1479","repository_url":"https://api.github.com/repos/bumptech/glide","labels_url":"https://api.github.com/repos/bumptech/glide/issues/1479/labels{/name}","comments_url":"https://api.github.com/repos/bumptech/glide/issues/1479/comments","events_url":"https://api.github.com/repos/bumptech/glide/issues/1479/events","html_url":"https://github.com/bumptech/glide/issues/1479","id":178279946,"number":1479,"title":"Network issue: Request failed 403: Forbidden","user":{"login":"ductranit","id":2063905,"avatar_url":"https://avatars.githubusercontent.com/u/2063905?v=3","gravatar_id":"","url":"https://api.github.com/users/ductranit","html_url":"https://github.com/ductranit","followers_url":"https://api.github.com/users/ductranit/followers","following_url":"https://api.github.com/users/ductranit/following{/other_user}","gists_url":"https://api.github.com/users/ductranit/gists{/gist_id}","starred_url":"https://api.github.com/users/ductranit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ductranit/subscriptions","organizations_url":"https://api.github.com/users/ductranit/orgs","repos_url":"https://api.github.com/users/ductranit/repos","events_url":"https://api.github.com/users/ductranit/events{/privacy}","received_events_url":"https://api.github.com/users/ductranit/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/bumptech/glide/labels/question","name":"question","color":"d4c5f9"},{"url":"https://api.github.com/repos/bumptech/glide/labels/repro-needed","name":"repro-needed","color":"fad8c7"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-09-21T08:29:44Z","updated_at":"2016-09-26T07:29:44Z","closed_at":null,"body":"<!--\r\nPlease fill in the below fields with some data to help us best diagnose the issue.\r\nThe more specific you are, the better! You can help a lot by not making us ask these questions.\r\nFeel free to remove any irrelevant parts that you know are not related to the issue.\r\nAny HTML comment like this will be stripped when rendering markdown, no need to delete them.\r\n-->\r\n\r\n<!-- What version of Glide you're running, for example: 3.7.1 | 3.8.0-SNAPSHOT | 4.0.0-SNAPSHOT\r\nIt's essentially the version number from your build.gradle: `dependencies { compile '...:x.y.z' }` -->\r\n**Glide Version**: 3.7.0\r\n\r\n<!-- Do you use any integration library, like OkHttp3 or Volley? For example:\r\nFails to display with stock networking, but works with okhttp3-1.4.0 -->\r\n**Integration libraries**: stock networking & OkHttp3\r\n\r\n<!-- What devices you managed to get the issue to come up on? For example:\r\nfails on Galaxy S4/GT-I9500 4.4.2, works fine on Nexus 6P 5.1 and Genymotion Nexus 5 5.0.1 -->\r\n**Device/Android Version**: samsung galaxy s3\r\n\r\n<!-- Share the details of your issue in prose, detailing actual and expected behavior. It also helps if you give some info **why** you are trying to do something as opposed to **what** is not working. -->\r\n\r\n**Issue details / Repro steps / Use case background**: \r\nThis is my image url: https://i.ytimg.com/vi/bNEtWBhkOVA/mqdefault.jpg\r\nThe image can't be loaded from Youtube server. The logcat says 403 error. But I can view this image on laptop or phone browser (and it does work if I use [UIL](https://github.com/nostra13/Android-Universal-Image-Loader) library)\r\nIt looks like issue #841 , but I tried OkHttp3 and still not work\r\n<!-- How do you use Glide?\r\nMake sure you include everything as is in your app's code:\r\nChanging a single method parameter can yield totally different results.\r\nPlease clarify any magic variables that appear in the code, for example: \"// `this` is a Fragment\"\r\n-->\r\n\r\n**Glide load line / `GlideModule` (if any) / list Adapter code (if any)**:\r\n```java\r\n// My Adapter\r\nGlide.with(context).load(item.getThumbnailUrl()).fitCenter().error(R.drawable.tw_image_holder).crossFade().into(holder.imgTextThumb);\r\n```\r\n\r\n<!-- How does your app look like?\r\nWe're most interested in the layout attributes and the hierarchy around the ImageView -->\r\n**Layout XML**:\r\n```xml\r\n<FrameLayout\r\n    android:layout_width=\"wrap_content\"\r\n    android:layout_height=\"wrap_content\">\r\n\r\n    <ImageView\r\n        android:id=\"@+id/imgTextThumb\"\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:layout_gravity=\"center\"\r\n        android:adjustViewBounds=\"true\"/>\r\n\r\n    <ImageView\r\n        android:id=\"@+id/imgPlay\"\r\n        android:layout_width=\"wrap_content\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:layout_gravity=\"center\"\r\n        android:src=\"@drawable/tw_btn_play_in_message\" />\r\n</FrameLayout>\r\n```\r\n\r\n<!--\r\nWhat is the error message that you got in the log?\r\nYou can find some help on diagnosing issues here: https://github.com/bumptech/glide/wiki/Debugging-and-Error-Handling\r\n-->\r\n**Stack trace / LogCat**:\r\n```ruby\r\nGenericRequest: load failed    java.io.IOException: Request failed 403: Forbidden\r\n    at com.bumptech.glide.load.data.HttpUrlFetcher.loadDataWithRedirects(HttpUrlFetcher.java:90)\r\n    at com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:44)\r\n    at com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:20)\r\n    at com.bumptech.glide.load.model.ImageVideoModelLoader$ImageVideoFetcher.loadData(ImageVideoModelLoader.java:70)\r\n    at com.bumptech.glide.load.model.ImageVideoModelLoader$ImageVideoFetcher.loadData(ImageVideoModelLoader.java:53)\r\n    at com.bumptech.glide.load.engine.DecodeJob.decodeSource(DecodeJob.java:170)\r\n    at com.bumptech.glide.load.engine.DecodeJob.decodeFromSource(DecodeJob.java:128)\r\n    at com.bumptech.glide.load.engine.EngineRunnable.decodeFromSource(EngineRunnable.java:122)\r\n    at com.bumptech.glide.load.engine.EngineRunnable.decode(EngineRunnable.java:101)\r\n    at com.bumptech.glide.load.engine.EngineRunnable.run(EngineRunnable.java:58)\r\n    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)\r\n    at java.util.concurrent.FutureTask.run(FutureTask.java:234)\r\n    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)\r\n    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)\r\n    at java.lang.Thread.run(Thread.java:841)\r\n    at com.bumptech.glide.load.engine.executor.FifoPriorityThreadPoolExecutor$DefaultThreadFactory$1.run(FifoPriorityThreadPoolExecutor.java:118)\r\n```\r\n\r\n<!-- Bonus points if you attach a relevant screenshot, screen recording or a small demo project -->\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/bumptech/glide/issues/comments/249498413","html_url":"https://github.com/bumptech/glide/issues/1479#issuecomment-249498413","issue_url":"https://api.github.com/repos/bumptech/glide/issues/1479","id":249498413,"user":{"login":"TWiStErRob","id":2906988,"avatar_url":"https://avatars.githubusercontent.com/u/2906988?v=3","gravatar_id":"","url":"https://api.github.com/users/TWiStErRob","html_url":"https://github.com/TWiStErRob","followers_url":"https://api.github.com/users/TWiStErRob/followers","following_url":"https://api.github.com/users/TWiStErRob/following{/other_user}","gists_url":"https://api.github.com/users/TWiStErRob/gists{/gist_id}","starred_url":"https://api.github.com/users/TWiStErRob/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TWiStErRob/subscriptions","organizations_url":"https://api.github.com/users/TWiStErRob/orgs","repos_url":"https://api.github.com/users/TWiStErRob/repos","events_url":"https://api.github.com/users/TWiStErRob/events{/privacy}","received_events_url":"https://api.github.com/users/TWiStErRob/received_events","type":"User","site_admin":false},"created_at":"2016-09-26T07:29:44Z","updated_at":"2016-09-26T07:29:44Z","body":"Can you try to put a breakpoint in HttpUrlFetcher into the branch that detects non-2xx and grab the response headers from the connection? I saw somewhere that servers may respond with `X-Reject-Reason`, let's hope YT does something similar too."}}
{"actor":{"display_login":"TWiStErRob"}}