如果我理解正确,您必须使用虚拟主机向 Web 服务器发出 http 请求,但尚未设置 DNS,因此您必须在 url 中指定 IP 地址,但在Host:标头中发送其他内容。
如果是这种情况,您可能可以这样做..
在 C# 中使用 WebProxy:
请参阅Kayode Leonard对 .NET 4 及更高版本的回答。
如果我的服务器正在运行67.223.227.171:8888
但我需要www.example.com
在Host:
标题中,这是我将使用的代码。
System.Net.WebRequest r = System.Net.WebRequest.Create("http://www.example.com");
r.Proxy = new WebProxy("http://67.223.227.171:8888");
看到这个链接
在使用 WinHttp 的 C++ 中:
使用 WinHttp,您可以简单地使用 WinHttpAddRequestHeaders 设置Host:
标头。
所以再一次,如果我的服务器正在运行,67.223.227.171:8888
但我需要www.example.com
在Host:
标题中:
#include <windows.h>
#include <winhttp.h>
#include <assert.h>
int main() {
HINTERNET hSession = WinHttpOpen(L"A WinHTTP Example Program/1.0",
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
WINHTTP_NO_PROXY_NAME,
WINHTTP_NO_PROXY_BYPASS, 0);
assert(hSession != NULL);
// Use WinHttpConnect to specify an HTTP server.
HINTERNET hConnect = WinHttpConnect( hSession,
L"67.223.227.171",
8888,
0 );
assert(hConnect != NULL);
// Open and Send a Request Header.
HINTERNET hRequest = WinHttpOpenRequest( hConnect,
L"GET",
L"/downloads/samples/internet/winhttp/retoptions/redirect.asp",
NULL,
WINHTTP_NO_REFERER,
WINHTTP_DEFAULT_ACCEPT_TYPES,
0 );
assert(hRequest != NULL);
BOOL httpResult = WinHttpAddRequestHeaders(
hRequest,
L"Host: www.example.com",
-1L,
0);
assert(httpResult);
httpResult = WinHttpSendRequest( hRequest,
WINHTTP_NO_ADDITIONAL_HEADERS,
0,
WINHTTP_NO_REQUEST_DATA,
0,
0,
0 );
assert(httpResult);
httpResult = WinHttpReceiveResponse( hRequest, NULL );
assert(httpResult);
}
编辑:类名是WebProxy
. 添加了 C# 示例代码。添加了 C++ 示例代码。