คำถามติดแท็ก dotnet-httpclient

หมายถึงไลบรารี System.Net.Http.HttpClient ซึ่งเป็นส่วนหนึ่งของแพ็คเกจ HttpClient บน NuGet หรือไลบรารี. NET 4.5


6
ฉันจะบอกได้อย่างไรเมื่อ HttpClient หมดเวลา
เท่าที่ฉันสามารถบอกได้ว่าไม่มีวิธีใดที่จะรู้ได้ว่าเป็นการหมดเวลาเฉพาะที่เกิดขึ้น ฉันไม่ได้มองถูกที่หรือว่าฉันพลาดบางอย่างที่ใหญ่กว่า? string baseAddress = "http://localhost:8080/"; var client = new HttpClient() { BaseAddress = new Uri(baseAddress), Timeout = TimeSpan.FromMilliseconds(1) }; try { var s = client.GetAsync("").Result; } catch(Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.InnerException.Message); } ผลตอบแทนนี้: เกิดข้อผิดพลาดอย่างน้อยหนึ่งรายการ งานถูกยกเลิก

3
async HttpClient จาก. Net 4.5 เป็นตัวเลือกที่ไม่ดีสำหรับแอปพลิเคชันที่มีภาระงานมากหรือไม่?
ฉันเพิ่งสร้างแอปพลิเคชันง่ายๆสำหรับทดสอบปริมาณงานการโทร HTTP ที่สามารถสร้างในลักษณะอะซิงโครนัสเทียบกับวิธีการแบบมัลติเธรดแบบเดิม แอปพลิเคชันสามารถทำการโทร HTTP ตามจำนวนที่กำหนดไว้ล่วงหน้าและในตอนท้ายจะแสดงเวลาทั้งหมดที่จำเป็นในการดำเนินการ ในระหว่างการทดสอบของฉันมีการเรียก HTTP ทั้งหมดไปยังเซิร์ฟเวอร์ IIS ในเครื่องของฉันและพวกเขาดึงไฟล์ข้อความขนาดเล็ก (ขนาด 12 ไบต์) ส่วนที่สำคัญที่สุดของโค้ดสำหรับการใช้งานแบบอะซิงโครนัสแสดงอยู่ด้านล่าง: public async void TestAsync() { this.TestInit(); HttpClient httpClient = new HttpClient(); for (int i = 0; i < NUMBER_OF_REQUESTS; i++) { ProcessUrlAsync(httpClient); } } private async void ProcessUrlAsync(HttpClient httpClient) { HttpResponseMessage httpResponse = null; try …

2
จะรับเนื้อหาจากการโทร httpclient ได้อย่างไร
ฉันพยายามหาวิธีอ่านเนื้อหาของการโทร httpclient แล้ว แต่ดูเหมือนจะไม่เข้าใจ สถานะการตอบกลับที่ฉันได้รับคือ 200 แต่ฉันคิดไม่ออกว่าจะส่งคืน Json ที่แท้จริงได้อย่างไรซึ่งทั้งหมดที่ฉันต้องการ! ต่อไปนี้เป็นรหัสของฉัน: async Task<string> GetResponseString(string text) { var httpClient = new HttpClient(); var parameters = new Dictionary<string, string>(); parameters["text"] = text; Task<HttpResponseMessage> response = httpClient.PostAsync(BaseUri, new FormUrlEncodedContent(parameters)); return await response.Result.Content.ReadAsStringAsync(); } และฉันได้รับมันเพียงแค่เรียกมันจากวิธีการ: Task<string> result = GetResponseString(text); และนี่คือสิ่งที่ฉันได้รับ response Id = 89, Status …

15
ไม่พบปัญหาแปลก ๆ กับ System.Net.Http 4.2.0.0
ฉันมีปัญหาแปลก ๆ ที่ทำให้ฉันแทบคลั่ง ... ฉันมีโครงการ Class Library อย่างง่าย (Full .NET Framework, 4.6.1) พร้อมคลาส wrapper สำหรับการทำงานรอบ ๆ Cosmos DB ดังนั้นฉันจึงได้เพิ่ม“ Microsoft.Azure.DocumentDB” NuGet Package 1.19.1 ลงในโครงการนี้ นอกเหนือจากนั้นฉันมีข้อมูลอ้างอิงถึงแพ็คเกจ NuGet“ Newtonsoft.Json” 10.0.3 รวมถึง“ Microsoft.Diagnostics.EventFlow. *” อีกสองสามรายการ จนถึงขณะนี้ทุกอย่างรวบรวมโดยไม่มีข้อผิดพลาดใด ๆ แต่ทันทีที่ฉันเข้าสู่คลาส Wrapper ของฉัน - ใช้จาก Service Fabric Stateless Service อย่างง่าย (Full .NET Framework 4.6.1) - และพยายามเรียกใช้โค้ดบรรทัดต่อไปนี้: …

3
พยายามดิ้นรนเพื่อให้คุกกี้ไม่ตอบสนองกับ HttpClient ใน. net 4.5
ฉันมีรหัสต่อไปนี้ที่ใช้งานได้สำเร็จ ฉันคิดไม่ออกว่าจะเอาคุกกี้ออกจากการตอบกลับอย่างไร เป้าหมายของฉันคือฉันต้องการตั้งค่าคุกกี้ในคำขอและนำคุกกี้ออกจากการตอบกลับ ความคิด? private async Task<string> Login(string username, string password) { try { string url = "http://app.agelessemail.com/account/login/"; Uri address = new Uri(url); var postData = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("username", username), new KeyValuePair<string, string>("password ", password) }; HttpContent content = new FormUrlEncodedContent(postData); var cookieJar = new CookieContainer(); …

3
การโทรแบบ Async ด้วยการรอใน HttpClient จะไม่ส่งกลับ
ฉันมีสายที่ฉันโทรจากภายในC#แอปพลิเคชันรถไฟใต้ดินที่ใช้xaml บน Win8 CP สายนี้เพียงแค่กระทบบริการเว็บและส่งคืนข้อมูล JSON HttpMessageHandler handler = new HttpClientHandler(); HttpClient httpClient = new HttpClient(handler); httpClient.BaseAddress = new Uri("http://192.168.1.101/api/"); var result = await httpClient.GetStreamAsync("weeklyplan"); DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(WeeklyPlanData[])); return (WeeklyPlanData[])ser.ReadObject(result); มันค้างที่awaitแต่การโทรhttpส่งกลับเกือบจะในทันที (ยืนยันผ่านมือไม่พาย); ราวกับว่าawaitถูกเพิกเฉยและมันก็ค้างอยู่ที่นั่น ก่อนที่คุณจะถาม - ใช่ - ความสามารถของเครือข่ายส่วนตัวเปิดอยู่ ความคิดใด ๆ ที่จะแขวน?

4
ฉันจะส่งออบเจ็กต์ไปยัง HttpClient.PostAsync และทำให้เป็นอนุกรมเป็นเนื้อความ JSON ได้อย่างไร
ฉันใช้อยู่System.Net.Httpฉันพบตัวอย่างมากมายบนเว็บ ฉันจัดการสร้างรหัสนี้เพื่อPOSTส่งคำขอ: public static string POST(string resource, string token) { using (var client = new HttpClient()) { client.BaseAddress = new Uri(baseUri); client.DefaultRequestHeaders.Add("token", token); var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("", "") }); var result = client.PostAsync("", content).Result; string resultContent = result.Content.ReadAsStringAsync().Result; return resultContent; } } ทำงานได้ดีทั้งหมด แต่คิดว่าฉันต้องการผ่านพระรามสามกับวิธีการที่เรียกว่าพารามิเตอร์POST dataพารามิเตอร์ข้อมูลเป็นวัตถุเช่นนี้: …

5
ฉันจะรับ StatusCode จาก HttpRequestException ได้อย่างไร
ฉันอาจจะขาดอะไรบางอย่างที่ชัดเจนที่นี่ ฉันกำลังใช้การHttpClientพ่นHttpRequestExceptionที่มีStatusCodeในสตริงข้อความ ฉันจะเข้าถึงสิ่งนั้นได้StatusCodeอย่างไร แก้ไข : ข้อมูลเพิ่มเติมฉันเขียนคำถามนี้อย่างเร่งด่วน ฉันกำลังใช้HttpClientเพื่อเข้าถึง API อื่นภายในโครงการ WebApi ของฉัน ใช่ฉันรู้ว่าทำไมฉันถึงโทรEnsureSuccessStatusCode()มา ฉันต้องการเผยแพร่ข้อผิดพลาดบางอย่างที่อยู่ด้านล่างเช่น 404 และ 403 สิ่งที่ฉันต้องการคือเปลี่ยนHttpRequestExceptionเป็นการHttpResponseExceptionใช้แบบกำหนดเองExceptionFilterAttributeอย่างสม่ำเสมอ น่าเสียดายที่HttpRequestExceptionไม่มีข้อมูลเพิ่มเติมใด ๆ ที่ฉันสามารถใช้ได้นอกจากข้อความ ฉันหวังว่าจะค้นพบStatusCodeในรูปแบบดิบ (int หรือ enum) ดูเหมือนว่าฉันสามารถ: ใช้ข้อความเพื่อเปลี่ยนรหัสสถานะ (bleh) หรือสร้าง SureSuccessStatusCode เวอร์ชันของฉันและโยนข้อยกเว้นที่ใช้งานได้จริง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.