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


Автор: ksail 24.7.2007, 20:19
Hello World !

Помогите разобратся с посылкой POST & GET запросов.

Приветствуются ссылки на статьи и исходники (8

Автор: jonie 24.7.2007, 22:30
вот те гет:
Код

GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible;)
Host: blablabla.somenet.ru
Connection: Keep-Alive

в ответ те серак шлет нечто типа
Код

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: W/"126-1151697600000"
Last-Modified: Fri, 30 Jun 2006 20:00:00 GMT
Content-Type: text/html
Content-Length: 126
Date: Tue, 24 Jul 2007 19:44:40 GMT

тело документа тут



пост сам поищещь - гугл расскажет.
-----------------------------------------
слать стало быть так же - суешь это в сокет вот те и посылка...
а вообще есть ПОИСК. Эта тема не раз обсуждалась.

Автор: Fin 25.7.2007, 00:13
Стандарт HTTP/1.0 RFC 1945 на английском http://www.faqs.org/rfcs/rfc1945.html
Стандарт HTTP/1.1 RFC 2616 на английском http://www.faqs.org/rfcs/rfc2616.html

Вот код с моего проекта. 
Код

      int sock=socket(PF_INET, SOCK_STREAM, 0);
      if (sock >0)
      {
     struct sockaddr_in dest;
     /**** Создание сокета ****/
     bzero(&dest, sizeof(dest)); /* обнуляем структуру */

     if (Host.IsVariable("0-9."))
     {
        if ( inet_aton((char *) Host, &dest.sin_addr) == 0)  
        {
           res=false;
           perror("Bad IP adress");
        }
     }
     else
     {
        struct hostent *hosti = NULL;
        hosti = gethostbyname((char *) Host);
        if (hosti != NULL) 
        {
           copyAdd(hosti->h_addr_list[0], &dest.sin_addr);
        }
        else 
        {
           res=false;
           perror ("Bad URL address");
        }
     } 
     if (res)
     {
        dest.sin_family = AF_INET;    /* выбираем протокол */
        dest.sin_port = htons ( Port ) ;          /* выбираем порт */
        if ( connect (sock,(sockaddr *) &dest, sizeof (dest)) != 0 ) /* подключаемся! */
        {
           perror ( " socket connection " ) ;
           res=false;
        }
     }
     if (res)
     {
        string qu("GET ");
        qu+=Path;
        qu+=" HTTP/1.0\r\n";
        qu+="Host: ";
        qu+=Host;
        qu+="\r\n";
        qu+="Accept-Language: en-gb,en;q=0.5\r\n";
        qu+="Accept-Charset: koi-8\r\n";
        qu+="\r\n";
   
        char buff[1024];
        send(sock,(char *)qu, qu.GetLenght(),0);
        int len;
   
        string str;
        do
        {
           bzero(buff, 1024);
           len=recv(sock,buff, 1023,0);
           //buff[len]=0;
           str.Add(buff);
        } while (len>0);

Автор: jonie 25.7.2007, 12:05
как варианты - libcurl .

или когда-то писалось для винды на WinInetAPI..... (писалось не мной, мной урезалось до нужного мне, исходник вроде на codeproject).....

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