problem of sending data with POST method

Тема в разделе "WASM.NETWORKS", создана пользователем BlackCode, 9 май 2005.

  1. BlackCode

    BlackCode New Member

    Публикаций:
    0
    Регистрация:
    9 май 2005
    Сообщения:
    3
    Адрес:
    Armenia, Yerevan
    I have Apache2 server and PHP4 installed on my local computer for educational purposes.



    I have the index2.php in my http server directory wich prints the myvar variables value.
    Код (Text):
    1.  
    2. <?php
    3.  
    4. echo '<html><head><title></title></head><body><p>';
    5. echo $_POST["myvar"];
    6. echo '</p></body></html>';
    7.  
    8. ?>
    9.  




    This thing is working fine when I post data from the index2.htm file,


    Код (Text):
    1.  
    2. <html><head><title>My PHP Query Page</title></head><body><br><br><center>
    3.  
    4. <form action="index2.php" method="post]
    5. <p> <input type="text" name="myvar]
    6. <input type="submit" value="Submit Query]
    7. <input type="reset" value="   Reset   ]
    8. </p></form>
    9. </center>
    10.  
    11. </body></html>
    12.  




    but it doesn't work when I try to post some data using HttpOpenRequest(...), HttpSendRequest(...) WinINET APIs.


    Код (Text):
    1.  
    2. #include <windows.h>
    3. #include <wininet.h>
    4.  
    5. #include <iostream>
    6.  
    7. using std::cout;
    8.  
    9. void main()
    10. {
    11. HINTERNET hInternet = InternetOpen(
    12.         "MyAgent",
    13.         INTERNET_OPEN_TYPE_DIRECT,
    14.         NULL,
    15.         NULL,0);
    16. cout<<"hInternet="<<(int)hInternet<<"\nGetLastError()="<<GetLastError( )<<"\n\n";
    17.  
    18.     HINTERNET hConnect = InternetConnect(
    19.         hInternet,
    20.         "127.0.0.1",
    21.         80,
    22.         NULL,
    23.         NULL,
    24.         INTERNET_SERVICE_HTTP,
    25.         0,
    26.         0);
    27.     cout<<"hConnect="<<(int)hConnect<<"\nGetLastError()="<<GetLastError() <<"\n\n";
    28.  
    29.     LPCTSTR AcceptTypes[] = { TEXT("*/*"), NULL};
    30.     HINTERNET hRequest = HttpOpenRequest(
    31.         hConnect,
    32.         "POST",
    33.         "/index2.php",
    34.         NULL,
    35.         NULL,
    36.         AcceptTypes,
    37.         INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_RELOAD | INTERNET_FLAG_PRAGMA_NOCACHE,
    38.         0);
    39.     cout<<"hRequest="<<(int)hRequest<<"\nGetLastError()="<<GetLastError() <<"\n\n";
    40.  
    41.     char optData[] = "?myvar=31";
    42.  
    43.     BOOL retRes = HttpSendRequest(
    44.         hRequest,
    45.         0,
    46.         0,
    47.         optData,
    48.         lstrlen(optData)
    49.         );
    50.     cout<<"retRes="<<(int)retRes<<"\nGetLastError()="<<GetLastError()<<"\ n\n";
    51.  
    52.     auto char  buffer[4096];
    53.     auto DWORD uLong;
    54.  
    55.     if(InternetReadFile(hRequest,buffer,4096,&uLong) == FALSE){
    56.   MessageBox(0,"ERROR InternetReadFile returns NULL","ERROR",0);
    57.         return;
    58.     }
    59.  
    60.     for(UINT i=0;i<uLong;i++){
    61.   cout<<buffer[i];
    62.     }
    63.  
    64.     Sleep(20000);
    65. }
    66.  




    The server respond like it doesn't receive any data.


    Код (Text):
    1. <html><head><title></title></head><body><p><br>
    2. <b>Warning</b>:  Undefined index:  myvar in <b>D:\!!HTTP!!\WWW\index2.php</b> on line <b>4</b><br>
    3. </p></body></html>




    I posted the optData string with the InternetSendRequest(...)



    optData[] = "?myvar=31";



    is it right ?

    what I made wrong ?



    Regards, Aram
     
  2. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    @echo $myvar; #not working? (sorry if it false, i'm lamer on php).
     
  3. Quantum

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

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine


    That's a GET secuence, not POST.
     
  4. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    Quantum



    ....
     
  5. Quantum

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

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    BlackCode

    NoName

    Take a look here
     
  6. BlackCode

    BlackCode New Member

    Публикаций:
    0
    Регистрация:
    9 май 2005
    Сообщения:
    3
    Адрес:
    Armenia, Yerevan




    are you sure ?



    if it is true,

    than can you tell me about POST sequence ?
     
  7. Quantum

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

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine


    I'm afraid, I am.



    You need to encode the POST data in a special way. Review the HTTP RFC from the link above.



    BTW, why not using GET in your PHP script? It's a lot easier.
     
  8. BlackCode

    BlackCode New Member

    Публикаций:
    0
    Регистрация:
    9 май 2005
    Сообщения:
    3
    Адрес:
    Armenia, Yerevan