gpt4 book ai didi

c# - HttpListener 未收到 URI 片段

转载 作者:行者123 更新时间:2023-12-05 05:25:27 25 4
gpt4 key购买 nike

我正在使用 Web API 接收我想在我的桌面应用程序中处理的 OAuth token 。 Web API 将用户重定向到 localhost:15779,我的应用程序使用下面的类在上面监听。
这里的问题是,提到的 API 通过 HTTP GET 发送 token ,但不使用查询参数 (?key=value),而是使用片段参数 (#key=value),我无法更改该行为,因为它不是我的 API。
示例:

http://127.0.0.1:15779/#access_token=b5c283xxxxxxxxe3lili5s003f5fqp&scope=chat_login+user_read

如果您看到下面的代码,您会注意到我正在将 HttpListenerContext.Request.Url.Fragment 写入 recievedData 变量,以便在浏览器中显示它,用于调试目的。问题是:它是空的。

关于如何获取 token 的任何想法?

class HttpLstn
{
public String prefixes;
public static String recievedData = "";

private static ManualResetEvent _waitHandle = new ManualResetEvent(false);

public void start(string prefixes)
{
this.prefixes = prefixes;
if (prefixes == null || prefixes.Length == 0)
throw new ArgumentException("Wrong listener URL");

using (HttpListener listenOn = new HttpListener())
{
if (!listenOn.Prefixes.Contains(this.prefixes))
listenOn.Prefixes.Add(this.prefixes);

listenOn.Start();
Thread.Sleep(100);
IAsyncResult result = listenOn.BeginGetContext(new AsyncCallback(ListenerCallback), listenOn);
_waitHandle.WaitOne();

Thread.Sleep(100);
listenOn.Close();
}
}

public static void ListenerCallback(IAsyncResult result)
{
try
{
HttpListener listenOn = (HttpListener)result.AsyncState;
HttpListenerContext context = listenOn.EndGetContext(result);
HttpListenerRequest request = context.Request;

//DEBUG
//write URL Fragment to recievedData in order to display it in the browser for testing purposes
recievedData = context.Request.Url.Fragment;
//DEBUG

HttpListenerResponse response = context.Response;
string responseString = recievedData;
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
response.ContentLength64 = buffer.Length;
Stream output = response.OutputStream;
output.Write(buffer, 0, buffer.Length);
output.Close();

_waitHandle.Set();
}
catch (HttpListenerException he) { }
catch (ObjectDisposedException oe) { }
}
}

最佳答案

我也遇到了。事实证明浏览器不会将片段部分发送到服务器;他们保留它并使用它滚动到返回文档的指定部分。

https://stackoverflow.com/a/14462350/723299

关于c# - HttpListener 未收到 URI 片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30993332/

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