gpt4 book ai didi

c# - System.Uri.CreateThis 返回 UriFormatException - URI 为空......但它不是

转载 作者:太空宇宙 更新时间:2023-11-03 15:44:21 25 4
gpt4 key购买 nike

这是一个奇怪的问题,今天出现了几次。

我有一个 WPF 应用程序可以向服务器发送一些消息。我正在使用 HttpWebRequest.Create 执行此操作。在这种情况下,所使用的 URL 是硬编码的。示例:

Dim Request As HttpWebRequest = HttpWebRequest.Create("https://www.google.com/")

这就是我能提供的所有代码,异常是从 HttpWebRequest.Create 方法中生成的。据我所知,运行 .Net 4.0。

我也用 C#,所以如果你有什么建议,那是你的“母语”,那就开枪吧。

我有几个问题,所以我想我会添加到周围代码的其余部分,但我在上面发布的那一行是异常直接来自的那一行。您将在下面的上下文中看到它,但它不是很有用。

Private Function edatRequest() As CookieCollection
Dim Request As HttpWebRequest = HttpWebRequest.Create("https://www.google.com/")
With Request
.AllowAutoRedirect = False
.Method = "POST"
.Accept = "*/*"
.Headers.Add("Accept-Encoding:gzip,deflate")
.Headers.Add("Accept-Language:en-US,en;q=0.8")
.KeepAlive = True
.CookieContainer = Me.MyCredentials.MyCookies
.ContentLength = 0
.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"
.Host = "https://www.google.com/"
.Headers.Add("Origin:https://www.google.com/")
.Referer = "https://wwww.google.com/"
.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36"
End With

Dim Response As HttpWebResponse = Request.GetResponse
Dim ResponseReader As New StreamReader(Response.GetResponseStream)
Dim ResponseText As String = ResponseReader.ReadToEnd

Dim ReturnCookies As New CookieContainer
ReturnCookies.Add(Response.Cookies)
Return ReturnCookies
End Sub

编辑:从我们的错误通知器添加一些堆栈跟踪信息:

The application has encountered an unhandled exeption and must
end. Please forward the following information to (our
department): System.UriFormatException: Invalid URI: The URI is
empty.
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind
uriKind)
at System.Uri..ctor(String uriString)
at System.Net.WebRequest.Create(String requestUriString)
at AutoLib.Automation.edatRequest()
at AutoLib.Automation.LogIn()
at AutoLib.Automation.Submit(Request1 Request) <- not actually a 1 - generic sub
at AutoTool.MainWindow.GetAuto()
at AutoTool.MainWindow.Lambda$_21()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext
executionContext, ContextCallback callback, Object state, Boolean
preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext
executionContext, ContextCallback callback, Object state, Boolean
preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext
executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()

给你。

最佳答案

我遇到了同样的问题,这是由作为 URL 传递的 UTF8 字符串引起的。

我必须将字符串复制到 Notepad++ ,将其转换为十六进制,然后发现在 http 内容之前有 E2 80 8B 字符开始字符串。

此前缀是 UTF8 的 unicode 指示符。

重新输入整个 URL,它应该会出现。注意,删除整个字符串并重新输入,不要仅仅修改字符串。

关于c# - System.Uri.CreateThis 返回 UriFormatException - URI 为空......但它不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28863537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com