Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > WinInet problem POST "/"


Автор: bsivko 2.8.2007, 21:26
При осуществлении запроса WinInet ~ по такому коду:

Код

// В коде по возможности убрана объектная обертка.

    InternetOpen(
        HTTP_CLIENT_NAME,
        INTERNET_OPEN_TYPE_DIRECT,
        NULL,
        NULL,
        0
    );
    
    InternetConnect(
        // Объект типа HINTERNET
        m_hinternet,  
        // Имя сервера. Вида "mail.ru"
        server.c_str(), 
        // int
        port_number,
        "",
        "",
        INTERNET_SERVICE_HTTP,
        0,
    0);

    hrequest = HttpOpenRequest(
        // То что от предыдущей функции.
        m_hconnect
        // Запрос "POST"
        , req_type.c_str() 
        // Объект запроса, тот что как "index.html" после "mail.ru/"
        , page_URL.c_str()
        , NULL
        , 0
        , 0
        ,INTERNET_FLAG_NO_AUTH | 
        INTERNET_FLAG_RELOAD | 
        INTERNET_FLAG_PRAGMA_NOCACHE | 
        INTERNET_FLAG_NO_COOKIES | 
        INTERNET_FLAG_NO_CACHE_WRITE
        , 0 
    );

    HttpSendRequest(
        hrequest,
        REQUEST_CONTENT_TYPE,
        -1,
        (void *) post_data.c_str(),
        post_data.length() 
    );



Идет полный запрос как(вылавливается сторонней прогой):

Код

POST /index.html HTTP/1.1
Content-Type: text/xml;charset=UTF-8
User-Agent: Http-cln-1 http client
Host: mail.ru
Content-Length: 695
Cache-Control: no-cache
...



Проблема в том, что сервер, с которым я работаю, не понимает конструкцию типа:

POST /index.html HTTP/1.1

Ему непременно подавай 

POST mail.ru/index.html HTTP/1.1 (*)

С помощью WinInet мне не удается прибить слеш "/" после POST'a и указать полный URL запроса.
Т.е. задача состоит в том, чтобы строка POST была в форме (*).

Буду признателен за любые мыли по этому поводу.

Автор: _hunter 3.8.2007, 11:22
ты этому серверу RFC дай почитать:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html
в частности главу 5.1.2 в частности абзац о идентиффикации ресурса на сервере/шлюзе.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)