gpt4 book ai didi

c++ - WinInet - 如何在 301 重定向后获取服务器 URL?

转载 作者:行者123 更新时间:2023-11-30 03:01:51 25 4
gpt4 key购买 nike

我正在使用 C++ 中的 WinInet 函数进行编程,但遇到了一个问题。

我的程序使用 HttpOpenRequest()HttpSendRequest()InternetReadFile()...函数打开 URL 并保存输出数据。我需要用输出数据保存 URL,但在某些情况下服务器给我 301 Moved 并且 InternetReadFile() 从新地址读取文件。

没问题,但我需要找出它的地址。我尝试将 HttpQueryInfoHTTP_QUERY_RAW_HEADERS_CRLF 一起使用,但我没有获得此信息,只有 Content-TypeCache-ControlCookies 等。当我使用 HTTP_QUERY_CONTENT_LOCATION 或类似的东西时,我得到 ERROR_HTTP_HEADER_NOT_FOUND

你能帮帮我吗?

最佳答案

WinInet 收到重定向响应后,默认情况下它会自动向新 URL 发送新的 HTTP 请求。当 WinInet 准备好让您开始使用 InternetReadFile() 读取文件数据时,此时可用的 header 属于最后请求的 URL,这可能与您最初的 URL 不同要求。这就是为什么您看不到 Location header 的原因。要处理重定向响应的 header ,您必须在调用 HttpOpenRequest() 时指定 INTERNET_FLAG_NO_AUTO_REDIRECT 标志,然后您可以使用 HttpQueryInfo()检测重定向状态代码并读取其 Location header ,然后调用 HttpSendRequest() 请求重定向到的新 URL。

关于c++ - WinInet - 如何在 301 重定向后获取服务器 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10707325/

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