Tag: httpclient

HttpClientHandler / HttpClient内存泄漏

我有10到150个长生命类对象,可以调用使用HttpClient执行简单HTTPS API调用的方法。 PUT调用示例: using (HttpClientHandler handler = new HttpClientHandler()) { handler.UseCookies = true; handler.CookieContainer = _Cookies; using (HttpClient client = new HttpClient(handler, true)) { client.Timeout = new TimeSpan(0, 0, (int)(SettingsData.Values.ProxyTimeout * 1.5)); client.DefaultRequestHeaders.TryAddWithoutValidation(“User-Agent”, Statics.UserAgent); try { using (StringContent sData = new StringContent(data, Encoding.UTF8, contentType)) using (HttpResponseMessage response = await client.PutAsync(url, sData)) { using (var content […]

授权标头在重定向时丢失

下面是进行身份validation的代码,生成Authorization标头并调用API。 不幸的是,我在API上发出GET请求后收到401 Unauthorized错误。 但是,当我捕获Fiddler中的流量并重放它时,对API的调用成功,我可以看到所需的200 OK状态代码。 [Test] public void RedirectTest() { HttpResponseMessage response; var client = new HttpClient(); using (var authString = new StringContent(@”{username: “”theUser””, password: “”password””}”, Encoding.UTF8, “application/json”)) { response = client.PostAsync(“http://host/api/authenticate”, authString).Result; } string result = response.Content.ReadAsStringAsync().Result; var authorization = JsonConvert.DeserializeObject(result); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(authorization.Scheme, authorization.Token); client.DefaultRequestHeaders.Add(“Accept”, “application/vnd.host+json;version=1”); response = client.GetAsync(“http://host/api/getSomething”).Result; Assert.True(response.StatusCode == HttpStatusCode.OK); […]