Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Заполнение web форм

28K
06 января 2008 года
John28
16 / / 25.11.2007
Подскажите как написать программку заполняющую web-форму данными из базы данных методом POST
355
07 января 2008 года
<SCORP>
786 / / 21.10.2006
изучайте протокол HTTP
Sockets
ну собссно, этого должно быть достаточно при знании какого-то языка программирования ;)
28K
07 января 2008 года
John28
16 / / 25.11.2007
Все-таки через сокеты? Спасибо, полистаю
92
07 января 2008 года
Тень Пса
2.2K / / 19.10.2006
WinInet? не подойдёт разве?

код для BuilderC++ 6.0 но заменить AnsiString на string или CString думаю можно :)

Код:
GLOBAL_SERVER = "host.com";
GLOBAL_PATH = "/path/to/script.php"; // например

AnsiString Post(AnsiString header, const void * data2, const int content_length)
{
DWORD dwServiceType;
DWORD buffsize=0;
AnsiString strData;
    HINTERNET hSession=NULL;
    HINTERNET hConnect=NULL;
    HINTERNET hRequest=NULL;
    hSession=InternetOpen(USER_AGENT.c_str(), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
    if (hSession)
    {
        hConnect=InternetConnect(hSession, GLOBAL_SERVER, PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
        if (hConnect)
        {
            hRequest=HttpOpenRequest(hConnect, "POST", GLOBAL_PATH, NULL, NULL, NULL,
                INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_KEEP_CONNECTION
                |INTERNET_FLAG_IGNORE_CERT_CN_INVALID,0);
            if(hRequest)
            {
                int tryCounts=1;
                while (1)
                {
                    BOOL resReq=HttpSendRequest( hRequest, header.c_str(), header.Length(), (LPVOID)data2, content_length );
                    if (!resReq)
                    {
                        DWORD dwError = GetLastError();
                        if (dwError != ERROR_INTERNET_INVALID_CA)
                                                {
                                                 break;
                                                }
                                                else
                         {
                         DWORD dwFlags;
                         DWORD dwBuffLen = sizeof(dwFlags);
                         InternetQueryOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, (LPVOID)&dwFlags, &dwBuffLen);
                         dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
                         InternetSetOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof(dwFlags));
                         continue;
                          }
                      }
                      else
                      {
                          DWORD dwStatusCode=0;
                          GetStatusCodeFormHTTPReq(hRequest, &dwStatusCode);
                          if ((dwStatusCode==200 && data2!=NULL) || (dwStatusCode>=200 && dwStatusCode<=299))
                          {
                              char rBuffer[1024];
                              DWORD rBytes=0;
                              while (1)
                              {
                                  InternetReadFile(hRequest, rBuffer, 1023, &rBytes);
                                  if (rBytes==0) break;
                                  rBuffer[rBytes]=0;
                                  strData+=(TCHAR *)rBuffer;
                              }
                                                        break;
                          }
                                                else if (dwStatusCode == HTTP_STATUS_PROXY_AUTH_REQ)
                                                {
                                                 if (tryCounts == 1)
                                                 {
                                                  appMessage("Can't complete request: Proxy authentication failed!\n\nPlease try to change \"Proxy server settings\" and try again.", 1);
                                                  break;
                                                 }
                                                  INTERNET_PER_CONN_OPTION_LIST    List;
                                                  INTERNET_PER_CONN_OPTION         Option[1];
                                                  unsigned long                    nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);

                                                  Option[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
                                                  strcpy(Option[0].Value.pszValue, AnsiString( "http://"+PROXY_ADDRESS+":"+AnsiString(PROXY_PORT) ).c_str());

                                                  List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
                                                  List.pszConnection = NULL;
                                                  List.dwOptionCount = 1;
                                                  List.dwOptionError = 0;
                                                  List.pOptions = Option;

                                                  if(!InternetSetOption(hRequest, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize))
                                                     return AnsiString("Proxy authentication failed!\n"+getLastErrorText());
                                                  InternetSetOption(hRequest,
                                                                    INTERNET_OPTION_PROXY_USERNAME,
                                                                    PROXY_USERNAME.c_str(),
                                                                    PROXY_USERNAME.Length()+1);

                                                  InternetSetOption(hRequest,
                                                                    INTERNET_OPTION_PROXY_PASSWORD,
                                                                    PROXY_PASSWORD.c_str(),
                                                                    PROXY_PASSWORD.Length()+1);
                                                  tryCounts++;
                                                }
                                                else
                                                {
                                                 if (tryCounts == 0) break;
                                                }
                    }
                }
                InternetCloseHandle(hRequest);
            }
            InternetCloseHandle(hConnect);
        }
        InternetCloseHandle(hSession);
    }
return strData;
}
28K
07 января 2008 года
John28
16 / / 25.11.2007
О, благодарствую, буду пробовать
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог