当前位置: 首页 > 知识库问答 >
问题:

GetLastError在调用WinHttpSendRequest后返回6

琴献
2023-03-14

我在网上搜索了很长时间。但没用。请帮助或尝试给出一些想法如何实现这一点。

提前谢了。

我有以下代码:

void QtGuiApplication::getBtnClick() {
    DWORD dwSize = 0;
    DWORD dwDownloaded = 0;
    LPSTR pszOutBuffer;
    BOOL  bResults = FALSE;
    HINTERNET  hSession = NULL,
        hConnect = NULL,
        hRequest = NULL;

    // Use WinHttpOpen to obtain a session handle.
    hSession = WinHttpOpen(L"WinHTTP Example/1.0",
        WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
        WINHTTP_NO_PROXY_NAME,
        WINHTTP_NO_PROXY_BYPASS, 0);

    // Specify an HTTP server.
    if (hSession) {

        hConnect = WinHttpConnect(hSession, L"127.0.0.1",
            INTERNET_DEFAULT_HTTP_PORT, 0);
    }
    else {
        qDebug("Error has WinHttpOpen");
        QString errorStr = QString::number(GetLastError());
        qDebug(qPrintable(errorStr));
    }



    // Create an HTTP request handle.
    if (hConnect) {
        hRequest = WinHttpOpenRequest(hConnect, L"GET", NULL,
            NULL, WINHTTP_NO_REFERER,
            WINHTTP_DEFAULT_ACCEPT_TYPES,
            WINHTTP_FLAG_SECURE);
    }
    else {
        qDebug("Error has WinHttpConnect");
        QString errorStr = QString::number(GetLastError());
        qDebug(qPrintable(errorStr));
    }


    // Send a request.
    if (hRequest) {
        bResults = WinHttpSendRequest(hRequest,
            WINHTTP_NO_ADDITIONAL_HEADERS,
            0, WINHTTP_NO_REQUEST_DATA, 0,
            0, 0);
    }
    else {
        qDebug("Error has WinHttpOpenRequest");
        QString errorStr = QString::number(GetLastError());
        qDebug(qPrintable(errorStr));
    }


    // End the request.
    if (bResults) {
        bResults = WinHttpReceiveResponse(hRequest, NULL);
    }
    else {
        qDebug("Error has WinHttpSendRequest");
        QString errorStr = QString::number(GetLastError());
        qDebug(qPrintable(errorStr));
    }


    // Keep checking for data until there is nothing left.
    if (bResults)
        do
        {
            // Check for available data.
            dwSize = 0;
            if (!WinHttpQueryDataAvailable(hRequest, &dwSize))
                printf("Error %u in WinHttpQueryDataAvailable.\n", GetLastError());

            // Allocate space for the buffer.
            pszOutBuffer = new char[dwSize + 1];
            if (!pszOutBuffer)
            {
                printf("Out of memory\n");
                dwSize = 0;
            }
            else
            {
                // Read the Data.
                ZeroMemory(pszOutBuffer, dwSize + 1);

                if (!WinHttpReadData(hRequest, (LPVOID)pszOutBuffer,
                    dwSize, &dwDownloaded))
                    printf("Error %u in WinHttpReadData.\n", GetLastError());
                else
                    qDebug(pszOutBuffer);

                // Free the memory allocated to the buffer.
                delete[] pszOutBuffer;
            }

        } while (dwSize > 0);


        // Report any errors.
        if (!bResults) {
            qDebug("Error has occurred");
            QString str = QString::number(GetLastError());
            qDebug(qPrintable(str));
        }


        // Close any open handles.
        if (hRequest) WinHttpCloseHandle(hRequest);
        if (hConnect) WinHttpCloseHandle(hConnect);
        if (hSession) WinHttpCloseHandle(hSession);
}
bResults = WinHttpSendRequest(hRequest,
            WINHTTP_NO_ADDITIONAL_HEADERS,
            0, WINHTTP_NO_REQUEST_DATA, 0,
            0, 0);
@Controller
public class MyController {
    @ResponseBody
    @RequestMapping("")
    public String home() {
        return "Home";
    }
}

使用winhttp API访问服务,获取springboot错误信息

我试了很多办法,还是没用。

例如,将springboot端口和winhttp API请求端口修改为8089。

共有1个答案

邹高峻
2023-03-14

从WinHttpConnect

INTERNET_DEFAULT_HTTP_PORT

使用HTTP服务器的默认端口(端口80)。

 类似资料:
  • 我试图用Mocha、Chai和Sinon为我的代码添加更多的测试,但是我很难理解为什么第二个存根函数没有被识别为被调用。 我有一个向用户发送电子邮件的功能(稍后我将测试电子邮件功能-现在我只想处理我控制的存根依赖项) 和测试文件: 我可以用Sinon存根User.findOne()方法,但是当我尝试存根emailLogger.log()方法时,我遇到了麻烦。它似乎调用了存根,而不是真正的方法,而是

  • 问题内容: 我有这样的事情,它是对脚本的简单调用,该脚本给了我一个值,一个字符串。 但是如果我这样称呼 那么我该如何返回值?下面的代码似乎也不起作用… 问题答案: 从该函数返回数据的唯一方法是进行同步调用而不是异步调用,但这将使浏览器在等待响应时冻结。 您可以传入一个处理结果的回调函数: 这样称呼它:

  • 我使用GLEW和freeglut。出于某种原因,在调用glewInit()之后,glGetError()返回错误代码1280,即使使用glewExperimental=GL_FALSE。 我无法编译着色器,glGetProgram InfoLog()返回“在调用glLinkProgram()之前,顶点着色器未成功编译。链接失败。”我之前能够编译着色器。 重新安装驱动程序没有帮助。 这是我的代码:

  • 问题内容: 例如我有一个功能: 我怎样才能返回AJAX后得到的? 问题答案: 因为请求是异步的,所以您无法返回ajax请求的结果(而同步ajax请求是一个 糟糕的 主意)。 最好的选择是将自己的回调传递给f1 然后,您将像这样致电:

  • 问题内容: 我正在使用Postgresql 8.3,并具有以下简单功能,该功能会将a返回 给客户端 现在,我可以使用以下SQL命令来调用此函数并操纵返回的游标,但是游标名称是由PostgreSQL自动生成的 此外,如38.7.3.5中所述,显式地将游标名称声明为函数的输入参数 。返回游标。我可以声明自己的游标名称并使用此游标名称来操纵返回的游标,而不是为我自动生成的Postgresql吗?如果不是

  • 问题内容: 和存在一种奇怪的行为,json_encode而json_decode我找不到解决方案: 我的php应用程序调用了php Web服务。Web服务返回的json如下所示: 现在我想在应用程序中解码json: 但它返回NULL: 我使用php5。来自Web服务的响应的也尝试使用 可能是什么原因? 问题答案: 编辑: 只是做了一些快速检查由OP提供的字符串。大括号前面的小“字符”是。我不知道为