1. Акция на весь декабрь! Получай оплату х2 за уникальные статьи, объемом от 200 слов, если в заголовке темы и теле статьи присутствует слово Python
    Скрыть объявление

Wininet && Masm32 && Httpsendrequest

Тема в разделе "Другие", создана пользователем FourtySeven, 27 сен 2006.

Статус темы:
Закрыта.
  1. FourtySeven

    FourtySeven Гость

    Пишу программу которая будет средствами wininet получать содержимое htm странички к сожалнию выдает ошибку на вызове HttpSendRequest :
    Код (Text):
        .386
    .model flat,stdcall
    option casemap:none
    include \masm32\include\windows.inc
    include \masm32\include\kernel32.inc
    include \masm32\include\wininet.inc

    includelib \masm32\lib\kernel32.lib
    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\wininet.lib


    .data
    count dd 0
    hsocket dd 0
    hConnect dd 0
    hRequest dd 0
    agent db "IE",0
    serv db "fourty-seven.nm.ru",0
    page1 db "index.htm",0
    filt db "*/*",0
    frm db "os",0
    header db "Content-Type: application/x-www-form-urlencoded",13,10,
    "Accept-Language:ru",13,10,
    "Accept-Encoding:gzip, deflate",13,10,13,10,0
    method db "GET",0
    ;------------------------------
    hStdOut dd ?
    .data?
    content db 4096 DUP(?)   ;Содержимое странички
    .code
    start:
    INVOKE InternetOpen,ADDR agent,INTERNET_OPEN_TYPE_PRECONFIG,0,0,0
    MOV hsocket,EAX


    INVOKE InternetConnect,hsocket,ADDR serv,INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1
    MOV hConnect,EAX

    INVOKE HttpOpenRequest,hConnect,ADDR method,ADDR page1,NULL,NULL,ADDR filt, INTERNET_FLAG_KEEP_CONNECTION, 1
    MOV hRequest,EAX

    INVOKE HttpSendRequest,hRequest,ADDR header, SIZEOF header,NULL, NULL; ЗДЕСЬ ОТЛАДЧИК ВЫДАЕТ ОШИБКУ (((

    INVOKE InternetReadFile,hRequest,ADDR content,1,ADDR count // Читаем байт.


    INVOKE InternetCloseHandle,hRequest
    INVOKE InternetCloseHandle,hConnect
    INVOKE InternetCloseHandle,hsocket
    ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    INVOKE GetStdHandle,STD_OUTPUT_HANDLE
    MOV hStdOut,EAX

    INVOKE WriteConsoleA,hStdOut,ADDR content,1,ADDR count,NULL

    INVOKE ExitProcess,0
    end start
    Заранее благодарен за совет.
     
  2. zubr

    zubr Гость

    Сразу что бросается в глаза - тип запроса GET, а используешь заголовок "Content-Type: application/x-www-form-urlencoded", данный тип заголовка используется для передачи POST-данных формы. Попробуй вместо хидера передавать NULL, да и вместо filt попробуй передавать NULL.
     
  3. FourtySeven

    FourtySeven Гость

    Спасибо. Еще один вопрос если я хочу передать GET запрос то как быть(Допустим login=123&pas=qwerty) и тоже самое для POST как составлять заголовки?
     
  4. zubr

    zubr Гость

    Ну аутентификация, по моему, от заголовков не зависит, более того многие заголовки вообще не обязательны. Важно, когда передаешь POST-дату серверу устанавливать заголовок "Content-Type: application/x-www-form-urlencoded", а когда передаешь файл-аттач серверу, то заголовок типа "Content-Type: multipart/form-data; boundary=---------------------------7d636b2qwert". Также заголовки удобней передавать функцией HttpAddRequestHeaders. А вообще, чтобы не заморачиваться с изучением нюансов HTTP-протокола, советую воспользоваться каким нибудь сниффером HTTP-пакетов. Я в свое время пользовался Http Analyzer. Сначала отправляешь через броузер запрос, с помощью сниффера смотришь, что броузер посылает (заголовки, данные), формируешь аналогичный запрос у себя.
     
  5. FourtySeven

    FourtySeven Гость

    Спасибо еще раз.
     
  6. newsoft

    newsoft Гость

    Ребята,как быть если при загрузке страницы,сервер просит COOKIE?
     
  7. alexsid

    alexsid Гость

    Надо их ему дать
     
Загрузка...
Похожие Темы - Wininet Masm32 Httpsendrequest
  1. shisik
    Ответов:
    2
    Просмотров:
    4.251
Статус темы:
Закрыта.

Поделиться этой страницей