Отправить POST запрос серверу

Тема в разделе "WASM.NETWORKS", создана пользователем Rustem, 5 янв 2007.

  1. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    Привтествую.

    В общем интересует сабж.
    Есть сервак, на нем крутится скрипт. Нужно передать скрипту данные методом POST.
    Делал через wininet - возврается веб-страница ;(

    Приведите пример. На любом языке, можно через сокеты, лишь бы работало
     
  2. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    поиск по форуму рулит
    а должно возвращаться что-то другое? =)
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Что за скрипт? Может, он просто не поддерживает POST?
     
  4. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    вот пример cpp+wininet
    Код (Text):
    1. void SendPostRequest(char *data)
    2. {
    3.     HINTERNET hSession = InternetOpen("post_example", LOCAL_INTERNET_ACCESS, NULL,
    4.         INTERNET_INVALID_PORT_NUMBER, INTERNET_FLAG_DONT_CACHE);
    5.  
    6.     HINTERNET hConnect = InternetConnect(hSession, "wasm.ru", INTERNET_DEFAULT_HTTP_PORT,
    7.         NULL, NULL, INTERNET_SERVICE_HTTP, NULL, NULL);
    8.     if (hConnect == NULL)
    9.         goto end;
    10.  
    11.     HINTERNET hRequest = HttpOpenRequest(hConnect, "POST", "index.php",  NULL, NULL, NULL, NULL, NULL);
    12.     if (hRequest == NULL)
    13.         goto end;
    14.  
    15.     char post_data[255];
    16.     strcpy(post_data, "ok=");
    17.     strcat(post_data, data);
    18.        
    19.     char *headers = "Content-Type: application/x-www-form-urlencoded"; 
    20.        
    21.     HttpSendRequest(hRequest, headers, strlen(headers), post_data, strlen(post_data));
    22. end:
    23.         if (hRequest)
    24.     InternetCloseHandle(hRequest);
    25.  
    26.         if (hConnect)
    27.     InternetCloseHandle(hConnect);
    28.  
    29.         if (hSession)
    30.     InternetCloseHandle(hSession);
    31. }
     
  5. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    Спасибо всем.
    Нашел ошибку. Передавал неправильный URI. Все работает!
     
  6. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    тоже сабж понадобился, можно ли отправить файл по HTTP и без заморочек? три дня разбирался почему PUT не работает (хост возвращает "метод не разрешен") и как его "включить", так и не получилось... потом начал уже пхп изучать :) собрал скрипт:
    Код (Text):
    1. <?php
    2. if ($file)
    3. {
    4.         if ($data = file_get_contents("php://input"))
    5.         {
    6.                 $base = fopen($file, "w");
    7.                 fwrite($base, $data);
    8.                 fclose($base);
    9.         }
    10. }
    11. ?>
    попробовал отправлять данные без кодирования в application/x-www-form-urlencoded:
    Код (Text):
    1.             stdcall [send],ebx,post,post$,0
    2. post        db      'POST /put.php?file=test.bin HTTP/1.0',13,10,\
    3.                     'Host: microsoft.com',13,10,\
    4.                     'Content-Length: 256',13,10,\
    5.                     'Connection: Close',13,10,13,10
    6. times       256     db %-1
    7. post$       =       $-post
    и болт, т.е. 256 байт принимаются, но коверкаются... зачем возится с multipart/form-data тоже не понимаю, можно ли из пхп как-то достучатся до сокета и прочитать самому то что передано?
     
  7. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    bogrus
    Попробуй поставь сниффер и посмотри что на самом деле передается.
     
  8. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    да? думаешь может что-то другое передаться?