mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
Update http_win.v
This commit is contained in:
parent
54d2f9921f
commit
46154c25b5
@ -55,13 +55,23 @@ pub fn (req &Request) do() Response {
|
||||
data := req.data
|
||||
// Retrieve default http user agent
|
||||
user_agent := ''
|
||||
internet := C.InternetOpenA(user_agent.str, INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0)
|
||||
// DWORD szhttpUserAgent = sizeof(httpUseragent);
|
||||
// ObtainUserAgentString(0, httpUseragent, &szhttpUserAgent);
|
||||
// # HINTERNET internet = InternetOpenA(httpUseragent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
|
||||
internet := C.InternetOpen(user_agent.to_wide(), INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0)
|
||||
// # if (!internet)
|
||||
if isnil(internet) {
|
||||
println('InternetOpen() failed')
|
||||
return emptyresp
|
||||
}
|
||||
port := int(if is_ssl{INTERNET_DEFAULT_HTTPS_PORT} else { INTERNET_DEFAULT_HTTP_PORT})
|
||||
connect := C.InternetConnectA(internet, host.str, port, 0, 0, INTERNET_SERVICE_HTTP, 0, 0)
|
||||
// if is_ssl {
|
||||
// # port = INTERNET_DEFAULT_HTTPS_PORT;
|
||||
// }
|
||||
connect := C.InternetConnect(internet, host.to_wide(), port, 0, 0, INTERNET_SERVICE_HTTP, 0, 0)
|
||||
// # HINTERNET connect = InternetConnectA(internet, host.str, port, NULL, NULL,
|
||||
// # INTERNET_SERVICE_HTTP, 0, 0);
|
||||
# if (!connect)
|
||||
if isnil(connect) {
|
||||
e := C.GetLastError()
|
||||
println('[windows] InternetConnect() failed')
|
||||
@ -81,12 +91,22 @@ pub fn (req &Request) do() Response {
|
||||
if is_ssl {
|
||||
#flags = flags | INTERNET_FLAG_SECURE;
|
||||
}
|
||||
request := C.HttpOpenRequest(connect, req.typ.str, path.str, 'HTTP/1.1', 0, 0, flags, 0)
|
||||
request := C.HttpOpenRequest(connect, req.typ.to_wide(), path.to_wide(), 'HTTP/1.1'.to_wide(), 0, 0, flags, 0)
|
||||
// request := C.InternetOpenUrl(connect, req.typ.str, path.str, 'HTTP/1.1', 0, 0, flags, 0)
|
||||
// # HINTERNET request = HttpOpenRequest(connect, req->typ.str, path.str, "HTTP/1.1",
|
||||
// # NULL, NULL, flags, NULL);
|
||||
// # if (!request)
|
||||
if isnil(request) {
|
||||
println('HttpOpenRequest() failed')
|
||||
return emptyresp
|
||||
}
|
||||
# bool ret =HttpSendRequest(request, headers.str, -1, data.str, data.len);
|
||||
// println('LEN BEFORE SEND=$headers.len ; $headers')
|
||||
ret := C.HttpSendRequest(request, headers.to_wide(), -1, data.str, data.len)
|
||||
// # printf("RET=%d\n", ret);
|
||||
// # int e = GetLastError();
|
||||
// # printf("e=%d\n", e);
|
||||
// Get response headers
|
||||
// Todo call twice to get len
|
||||
# LPSTR h_buf = malloc(1024);
|
||||
# DWORD dwSize = 1024;
|
||||
# HttpQueryInfo(request, HTTP_QUERY_RAW_HEADERS_CRLF,
|
||||
@ -109,7 +129,7 @@ pub fn (req &Request) do() Response {
|
||||
break
|
||||
}
|
||||
buf[nr_read] = 0
|
||||
s += string(buf, nr_read) // TODO perf
|
||||
s += tos(buf, nr_read) // TODO perf
|
||||
nr_read = 0
|
||||
}
|
||||
C.InternetCloseHandle(request)
|
||||
|
Loading…
Reference in New Issue
Block a user