Как отправить данные POST методом скрипту

Тема в разделе "WASM.BEGINNERS", создана пользователем tester3000, 8 мар 2008.

  1. tester3000

    tester3000 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    140
    сабж. помогите плиз нужен пример на masm а лучшее на fasm поискал в исходниках там только как работать с сокетами
     
  2. tester3000

    tester3000 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    140
    трабла с HttpSendRequest не знаю как посчитать dwHeadersLength, dwOptionalLength и заполнить lpOptional подскажите плиз

    Код (Text):
    1. BOOL HttpSendRequest(
    2.     HINTERNET hRequest,
    3.     LPCTSTR lpszHeaders,
    4.     DWORD dwHeadersLength,
    5.     LPVOID lpOptional,
    6.     DWORD dwOptionalLength
    7. );
    Код (Text):
    1. format PE GUI 4.0
    2. entry start
    3.  
    4. include 'win32a.inc'
    5.  
    6. section '.data' data readable writeable
    7.  
    8. hInternet dd ?
    9. hConnect  dd ?
    10. hRequest  dd ?
    11.  
    12.  
    13. INTERNET_OPEN_TYPE_PRECONFIG = 0
    14. INTERNET_SERVICE_HTTP = 3
    15. INTERNET_FLAG_KEEP_CONNECTION = 400000
    16.  
    17. lpszFile       db 'C:\file.txt',0
    18. lpszAgent      db 'Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; .NET CLR 1.0.2914)',0
    19. lpszServerName db 'localhost',0
    20. lpszVerb       db 'POST',0
    21. lpszObjectName db 'index.php',0
    22. lpszHeaders    db 'Content-Type: application/x-www-form-urlencoded',13,10,0
    23.  
    24. lpnoopenfile    db 'Unable to open local file!',0
    25. lpnosession     db 'Unable to create new remote session!',0
    26. lpnoconnect     db 'There are no connection with remote host!',0Dh,'Please check is connection alive?',0
    27. lpnorequest     db 'Unable to open request!',0
    28. lpnosendrequest db 'Unable to send request!',0
    29. lpuploadok      db 'Upload complete!',0
    30. lpinfo          db 'File upload',0
    31.  
    32. section '.code' code readable executable
    33.    start:
    34.          invoke InternetOpen,lpszAgent,INTERNET_OPEN_TYPE_PRECONFIG,0,0,0
    35.          test eax,eax
    36.          jnz @F
    37.          mov eax,lpnosession
    38.          call ShowError
    39.          jmp _exit
    40.  
    41. @@:
    42.          mov [hInternet],eax
    43.          invoke InternetConnect,eax,lpszServerName,80,0,0,INTERNET_SERVICE_HTTP,0,0
    44.          test eax,eax
    45.          jnz @F
    46.          mov eax,lpnoconnect
    47.          call ShowError
    48.          jmp _close_inet
    49.  
    50. @@:
    51.         mov [hConnect],eax
    52.         invoke HttpOpenRequest,eax,lpszVerb,0,0,INTERNET_FLAG_KEEP_CONNECTION,0
    53.         test eax,eax
    54.         jnz @F
    55.         mov eax,lpnorequest
    56.         call ShowError
    57.         jmp _close_inet
    58.  
    59.  
    60. @@:
    61.         mov [hRequest],eax
    62.         invoke HttpSendRequest,eax,lpszHeaders,dwHeadersLength,lpOptional,dwOptionalLength
    63.         test eax,eax
    64.         jnz @F
    65.         mov eax,lpnosendrequest
    66.         call ShowError
    67.         jmp _close_inet
    68.  
    69. @@:
    70.         invoke MessageBox,0,lpuploadok,lpinfo,MB_ICONINFORMATION+MB_TOPMOST
    71.  
    72. _close_inet:
    73.        invoke InternetCloseHandle,[hInternet]
    74. _exit:
    75.        invoke ExitProcess,0
    76.  
    77. proc ShowError
    78.        invoke MessageBox,0,eax,0,MB_ICONERROR+MB_TOPMOST
    79.        ret
    80. endp
    81.  
    82. section '.idata' import data readable
    83.  
    84. library kernel,'KERNEL32.DLL',\
    85.         wininet,'WININET.DLL',\
    86.         user32,'USER32.DLL'
    87.  
    88. import kernel,\
    89.        ExitProcess,'ExitProcess',\
    90.        CloseHandle,'CloseHandle'
    91.  
    92. import wininet,\
    93.        InternetOpen,'InternetOpenA',\
    94.        InternetConnect,'InternetConnectA',\
    95.        HttpOpenRequest,'HttpOpenRequestA',\
    96.        HttpSendRequest,'HttpSendRequestA',\
    97.        InternetCloseHandle,'InternetCloseHandle'
     
  3. zoool

    zoool New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2007
    Сообщения:
    412
    Вот так описана функция в МСДН. Скачай себе. Полезнейшая вещь!

    В твоем случае:
    lpOptional = NULL
    dwOptionalLength = NULL, т.к. нет дополнительных заголовков
    dwHeadersLength = 0xFFFFFFFF
     
  4. tester3000

    tester3000 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    140
    zoool

    да читал я уже это и на rsnd и на msdn

    Код (Text):
    1. lpszFile       db 'C:\file.txt',0
    2. lpszAgent      db 'Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; .NET CLR 1.0.2914)',0
    3. lpszServerName db 'localhost',0
    4. lpszVerb       db 'POST',0
    5. lpszObjectName db 'index.php',0
    6. lpszHeaders    db 'Content-Type: application/x-www-form-urlencoded',13,10,0
    мне file.txt нужно отправить методом POST на сервак (http://localhost/index.html)

    index.html
    Код (Text):
    1. <form action="http://localhost/upload.php" method="POST" enctype="multipart/form-data">
    2.             <input type="file" name="file" size="40">
    3.             <input type="submit" value="Upload">
    4. </form>
    upload.php
    Код (Text):
    1. <?php
    2. if($_FILES["filename"]["size"] > 1024*3*1024)
    3. {
    4. echo ("Max. file size is 3 mb");
    5. exit;
    6. }
    7. if(copy($_FILES["filename"]["tmp_name"],
    8. "c:/temp/".$_FILES["filename"]["name"]))
    9. {
    10. echo("File uploaded <br>");
    11. echo("Filename: ");
    12. echo($_FILES["filename"]["name"]);
    13. echo("<br>Size: ");
    14. echo($_FILES["filename"]["size"]);
    15. echo("<br>Dir: ");
    16. echo($_FILES["filename"]["tmp_name"]);
    17. echo("<br>Type: ");
    18. echo($_FILES["filename"]["type"]);
    19. } else {
    20. echo("Could not upload file");
    21. }
    22. ?>
    В моем случае как раз и надо заполнить это The optional data can be the resource or information being posted to the server. This parameter can be NULL if there is no optional data to send. + длину посчитать а как это сделать я не знаю :dntknw: