{"record":{"id":"2470d1713fea120d","repo":"JustArchiNET/ArchiSteamFarm","slug":"response-is-null-2470d1","errorCode":null,"errorMessage":"response is null!","messagePattern":"response is null!","errorType":"exception","errorClass":"HttpRequestException","httpStatus":null,"severity":"error","filePath":"ArchiSteamFarm/Steam/Integration/ArchiWebHandler.cs","lineNumber":342,"sourceCode":"\t\tint rateLimitingDelay = (ASF.GlobalConfig?.InventoryLimiterDelay ?? GlobalConfig.DefaultInventoryLimiterDelay) * 1000;\n\n\t\twhile (true) {\n\t\t\tUri request = new(SteamCommunityURL, $\"/inventory/{steamID}/{appID}/{contextID}?l={language}&count={itemsCountPerRequest}{(startAssetID > 0 ? $\"&start_assetid={startAssetID}\" : \"\")}\");\n\n\t\t\tawait ASF.InventorySemaphore.WaitAsync().ConfigureAwait(false);\n\n\t\t\tObjectResponse<InventoryResponse>? response = null;\n\n\t\t\ttry {\n\t\t\t\tfor (byte i = 0; (i < WebBrowser.MaxTries) && (response?.Content is not { Result: EResult.OK } || !response.StatusCode.IsSuccessCode()); i++) {\n\t\t\t\t\tif ((i > 0) && (rateLimitingDelay > 0)) {\n\t\t\t\t\t\tawait Task.Delay(rateLimitingDelay).ConfigureAwait(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tresponse = await UrlGetToJsonObjectWithSession<InventoryResponse>(request, requestOptions: WebBrowser.ERequestOptions.ReturnClientErrors | WebBrowser.ERequestOptions.ReturnServerErrors | WebBrowser.ERequestOptions.AllowInvalidBodyOnErrors | WebBrowser.ERequestOptions.SteamWafWorkarounds, rateLimitingDelay: rateLimitingDelay).ConfigureAwait(false);\n\n\t\t\t\t\tif (response == null) {\n\t\t\t\t\t\tthrow new HttpRequestException(Strings.FormatErrorObjectIsNull(nameof(response)));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (response.StatusCode.IsClientErrorCode()) {\n\t\t\t\t\t\tthrow new HttpRequestException(Strings.FormatWarningFailedWithError(response.StatusCode), null, response.StatusCode);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (response.StatusCode.IsServerErrorCode()) {\n\t\t\t\t\t\tif (string.IsNullOrEmpty(response.Content?.ErrorText)) {\n\t\t\t\t\t\t\t// This is a generic server error without a reason, try again\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tBot.ArchiLogger.LogGenericDebug(Strings.FormatWarningFailedWithError(response.Content.ErrorText));\n\n\t\t\t\t\t\t// Try to interpret the failure reason and see if we should try again\n\t\t\t\t\t\tswitch (response.Content.ErrorCode) {\n\t\t\t\t\t\t\tcase EResult.Busy:\n\t\t\t\t\t\t\tcase EResult.DuplicateRequest:","sourceCodeStart":324,"sourceCodeEnd":360,"githubUrl":"https://github.com/JustArchiNET/ArchiSteamFarm/blob/fe57c4129f4ce02d452318cabc525eb49a087255/ArchiSteamFarm/Steam/Integration/ArchiWebHandler.cs#L324-L360","documentation":"First guard inside the ArchiWebHandler inventory retry loop: if UrlGetToJsonObjectWithSession returns null (no HTTP response object at all), an HttpRequestException 'response is null!' is thrown immediately. This indicates the HTTP layer could not produce a response envelope, distinct from a server-returned error status.","triggerScenarios":"The web request returns a null ObjectResponse — e.g. request aborted, transport-level failure before any status code, or an internal helper returning null on a non-recoverable transport error.","commonSituations":"Network/DNS failure, TLS handshake failure, proxy misconfiguration, connection reset, or ASF's WebBrowser returning null for an unsupported/cancelled request.","solutions":["Check ASF logs for the transport-level cause (proxy, TLS, DNS).","Verify network connectivity and Steam community reachability.","Retry; transient transport failures often clear.","Correct any WebProxy / Proxy config in GlobalConfig."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Verify reachability before issuing the inventory request.\nif (!await webHandler.IsUrlReachable(SteamCommunityUrl)) return;","typeGuard":null,"tryCatchPattern":"try { await foreach (var a in webHandler.GetInventoryAsync(steamID)) { /* ... */ } }\ncatch (HttpRequestException ex) when (ex.Message.Contains(\"response is null\")) {\n    // transport failure; check proxy/connectivity, retry with backoff\n}","preventionTips":["Validate proxy/DNS/TLS configuration in GlobalConfig.","Retry transport nulls with exponential backoff.","Monitor Steam community reachability from the host."],"tags":["steam","inventory","http","network","transport"],"backgroundTag":null,"analyzedSha":"fe57c4129f4ce02d452318cabc525eb49a087255","analyzedAt":"2026-08-13T17:26:20.146Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}