Đây là một vấn đề kỳ lạ đã xuất hiện một vài lần ngày hôm nay.
Tôi có một ứng dụng WPF gửi một số tin nhắn đến máy chủ. Tôi đang sử dụng HttpWebRequest.Create để thực hiện việc này. Trong trường hợp này, URL được sử dụng được mã hóa cứng. Ví dụ:
Yêu cầu mờ dưới dạng HttpWebRequest = HttpWebRequest.Create("https://www.google.com/")
Đây là tất cả mã tôi có thể cung cấp, ngoại lệ được tạo từ phương thức HttpWebRequest.Create. Theo như tôi biết thì chạy .Net 4.0.
Tôi cũng sử dụng C#, vì vậy nếu bạn có bất kỳ đề xuất nào về "ngôn ngữ mẹ đẻ" của mình, hãy liên hệ với tôi.
Tôi có một vài câu hỏi nên tôi nghĩ mình nên thêm phần còn lại của mã xung quanh vào, nhưng dòng tôi đăng ở trên là dòng mà ngoại lệ xuất phát trực tiếp. Bạn sẽ thấy nó trong ngữ cảnh bên dưới, nhưng nó không hữu ích lắm.
Hàm riêng edatRequest() dưới dạng CookieCollection
Yêu cầu mờ dưới dạng HttpWebRequest = HttpWebRequest.Create("https://www.google.com/")
Với yêu cầu
.AllowAutoRedirect = Sai
.Phương thức = "BÀI ĐĂNG"
.Chấp nhận = "*/*"
.Headers.Add("Chấp nhận-Mã hóa:gzip,deflate")
.Headers.Add("Ngôn ngữ chấp nhận:en-US,en;q=0.8")
.KeepAlive = Đúng
.CookieContainer = Tôi.MyCredentials.MyCookies
.Độ dài nội dung = 0
.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"
.Host = "https://www.google.com/"
.Headers.Add("Nguồn gốc:https://www.google.com/")
.Người giới thiệu = "https://wwww.google.com/"
.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, như Gecko) Chrome/38.0.2125.111 Safari/537.36"
End With
Phản hồi mờ như HttpWebResponse = Yêu cầu.GetResponse
ResponseReader mờ dưới dạng StreamReader mới (Response.GetResponseStream)
Làm mờ văn bản phản hồi dưới dạng chuỗi = ResponseReader.ReadToEnd
Dim ReturnCookies Là CookieContainer mới
ReturnCookies.Add(Response.Cookies)
Trả lại Trả lạiCookie
End Sub
EDIT: Thêm một số thông tin theo dõi ngăn xếp từ trình thông báo lỗi của chúng tôi:
Ứng dụng đã gặp phải trường hợp ngoại lệ chưa được xử lý và phải
end. Vui lòng chuyển tiếp các thông tin sau tới (của chúng tôi).
bộ phận): System.UriFormatException: URI không hợp lệ: URI là
trống.
tại System.Uri.CreateThis(String uri, BooleandontEscape, UriKind
uriKind)
tại System.Uri..ctor(Chuỗi uriString)
tại System.Net.WebRequest.Create(Chuỗi requestUriString)
tại AutoLib.Automation.edatRequest()
tại AutoLib.Automation.LogIn()
tại AutoLib.Automation.Submit(Request1 Yêu cầu) <- thực tế không phải là 1 - phụ chung
tại AutoTool.MainWindow.GetAuto()
tại AutoTool.MainWindow.Lambda$_21()
tại System.Threading.ThreadHelper.ThreadStart_Context(Trạng thái đối tượng)
tại System.Threading.ExecutionContext.RunInternal(ExecutionContext
thực thiContext, gọi lại ContextCallback, trạng thái đối tượng, Boolean
bảo quảnSyncCtx)
tại System.Threading.ExecutionContext.Run(ExecutionContext
thực thiContext, gọi lại ContextCallback, trạng thái đối tượng, Boolean
bảo quảnSyncCtx)
tại System.Threading.ExecutionContext.Run(ExecutionContext
thực thiContext, gọi lại ContextCallback, trạng thái đối tượng)
tại System.Threading.ThreadHelper.ThreadStart()
dành cho bạn.
Tôi gặp vấn đề tương tự và nguyên nhân là do chuỗi UTF8 được truyền dưới dạng URL.
Tôi đã phải sao chép chuỗi này sang Notepad++, chuyển đổi nó thành hex và phát hiện ra rằng có các ký tự E2 80 8B bắt đầu chuỗi trước nội dung http.
Tiền tố này là ký hiệu unicode cho UTF8.
Nhập lại toàn bộ URL và nó sẽ xuất hiện. Lưu ý, xóa toàn bộ chuỗi và nhập lại, không chỉ sửa đổi chuỗi.
Tôi là một lập trình viên xuất sắc, rất giỏi!