服务器收到所有数据,但HttpSendRequest在客户端返回FALSE 12002

时间:2014-09-24 09:53:43

标签: c++ sockets http winapi http-headers

客户端通过HttpSendRequest向服务器发送一些数据:

            if (!HttpSendRequest(request.get(), NULL, 0,
                     const_cast<char *>(request_body.data()),
                     static_cast<DWORD>(request_body.size()))) {
                // return false;
            }

我的服务器收到request_body中的所有数据,然后发送回复:

            char success_message[] =
                    "HTTP/1.1 200 OK" "\n"
                    "Content-Type: text/xml; charset=utf-8" "\n"
                    "Content-Length: 0" "\n";

(我通过socket发送此响应) 但是在客户HttpSendRequest阻止~10秒后返回FALSE,错误12002GetLastError().返回

所以我的问题是:

  1. 我的回复讯息是否格式错误?
  2. HttpSendRequest从阻止中返回时?
  3. 编辑1: 这是来自客户的请求,有更多数据但不需要,我虽然

        POST / HTTP/1.1
        Content-Type: multipart/form-data; boundary=---------------------------0000002900004823
        User-Agent: Breakpad/1.0 (Windows)
        Host: 127.0.0.1:1519
        Content-Length: 437805
        Cache-Control: no-cache
    
        -----------------------------0000002900004823
        Content-Disposition: form-data; name="channel"
    
    
        -----------------------------0000002900004823
    

1 个答案:

答案 0 :(得分:1)

客户端超时是因为您的服务器没有发送格式正确的响应。请阅读HTTP规范RFC 2616,特别是Section 4 HTTP MessageSection 6 Response以获取语法规则。

试试这个:

char success_message[] =
                "HTTP/1.1 200 OK" "\r\n"
                "Content-Type: text/xml; charset=utf-8" "\r\n"
                "Content-Length: 0" "\r\n"
                "\r\n";