{"record":{"id":"fcd3c7a4edab47e4","repo":"NickeManarin/ScreenToGif","slug":"empty-response-from-server-when-getting-language-c-fcd3c7","errorCode":null,"errorMessage":"Empty response from server when getting language codes path","messagePattern":"Empty response from server when getting language codes path","errorType":"exception","errorClass":"WebException","httpStatus":null,"severity":"error","filePath":"Other/Translator/TranslatorWindow.xaml.cs","lineNumber":736,"sourceCode":"                var json = await Task<XElement>.Factory.StartNew(() => XElement.Load(jsonReader));\n                var languages = json.Elements();\n\n                return await Task.Factory.StartNew(() => languages.Where(x => x.XPathSelectElement(\"defs\").Value != \"0\").Select(x => x.XPathSelectElement(\"lang\").Value));\n            }\n        }\n    }\n\n    private async Task<string> GetLanguageCodesPathAsync()\n    {\n        var request = (HttpWebRequest)WebRequest.Create(\"https://datahub.io/core/language-codes/datapackage.json\");\n        request.UserAgent = \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393\";\n\n        var response = (HttpWebResponse)await request.GetResponseAsync();\n\n        using (var resultStream = response.GetResponseStream())\n        {\n            if (resultStream == null)\n                throw new WebException(\"Empty response from server when getting language codes path\");\n\n            using (var reader = new StreamReader(resultStream))\n            {\n                var result = await reader.ReadToEndAsync();\n\n                var jsonReader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(result),\n                    new System.Xml.XmlDictionaryReaderQuotas());\n\n                var json = await Task<XElement>.Factory.StartNew(() => XElement.Load(jsonReader));\n\n                return await Task.Factory.StartNew(() => json.XPathSelectElement(\"resources\").Elements().First(x => x.XPathSelectElement(\"name\").Value == \"ietf-language-tags_json\").XPathSelectElement(\"path\").Value);\n            }\n        }\n    }\n\n    #endregion\n}\n","sourceCodeStart":718,"sourceCodeEnd":754,"githubUrl":"https://github.com/NickeManarin/ScreenToGif/blob/a4d0a67c2131cd048ceec86cd40afc2f1a06f2fd/Other/Translator/TranslatorWindow.xaml.cs#L718-L754","documentation":"Thrown by GetLanguageCodesPathAsync when response.GetResponseStream() returns null while fetching the datapackage.json from datahub.io. This is the same null-stream condition as error [2] but on the initial datapackage request rather than the language-codes JSON request.","triggerScenarios":"HttpWebResponse.GetResponseStream() returns null on the GET to https://datahub.io/core/language-codes/datapackage.json. Server accepted the connection but sent no body stream.","commonSituations":"Datahub.io server instability or maintenance. Proxy or firewall interfering with the response body. DNS resolves but connection drops before body transmission. Rate limiting from datahub.io that returns headers without a body.","solutions":["Retry the request with KeepAlive disabled.","Verify the URL https://datahub.io/core/language-codes/datapackage.json is accessible from a browser or curl.","Cache the datapackage.json path locally so it does not need to be fetched every time.","Fall back to the hardcoded language codes list in the TranslatorWindow class."],"exampleFix":"// before\nvar request = (HttpWebRequest)WebRequest.Create(\"https://datahub.io/core/language-codes/datapackage.json\");\nvar response = (HttpWebResponse)await request.GetResponseAsync();\nusing (var resultStream = response.GetResponseStream())\n{\n    if (resultStream == null)\n        throw new WebException(\"Empty response from server when getting language codes path\");\n\n// after: set KeepAlive = false and add retry logic\nvar request = (HttpWebRequest)WebRequest.Create(\"https://datahub.io/core/language-codes/datapackage.json\");\nrequest.KeepAlive = false;\nrequest.Timeout = 15000;","handlingStrategy":"fallback","validationCode":"// Check connectivity before making the API call\nif (!await IsHostReachable(\"datahub.io\"))\n    return string.Empty; // will trigger the hardcoded fallback\nvar request = (HttpWebRequest)WebRequest.Create(\"https://datahub.io/core/language-codes/datapackage.json\");\nrequest.KeepAlive = false;","typeGuard":null,"tryCatchPattern":"try\n{\n    return await GetLanguageCodesPathAsync();\n}\ncatch (WebException)\n{\n    return string.Empty; // triggers fallback to hardcoded language list in caller\n}","preventionTips":["Cache the datapackage.json path URL after first successful fetch.","Use the hardcoded language code list as the primary source, only fetching from datahub.io for updates.","Set appropriate timeouts and KeepAlive=false on datahub.io requests."],"tags":["network","http","datahub","localization","translator"],"backgroundTag":null,"analyzedSha":"a4d0a67c2131cd048ceec86cd40afc2f1a06f2fd","analyzedAt":"2026-08-13T11:12:06.147Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}