|
|
|
новичок
      
участник
Last Login: 24.10.2006 17:34
Сообщ.: 4,
Visits: 8
|
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Это не XML запрос, а обычный GET запрос возвращающий XML. Подставляем нужную дату в параметр date и получаем ответ в виде строке. Далее можно продолжать работать с ответом как со строкой так подать на вход XML парсеру. Конкретного ответа дать не могу так как ты забыл сказать на чем ты это делаешь.
|
|
|
|
|
новичок
      
участник
Last Login: 24.10.2006 17:34
Сообщ.: 4,
Visits: 8
|
|
| Пишу С++, делаю все через WinSock.
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| И в чем именно трудность? По идее должен отработать GET запрос такого вида: GET /apps/ofexch_xml.jsp?lang=2&data=10/23/2006 HTTP/1.1 Accept: */* User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Host: bnm.md В ответ тебе придет xml в виде строки.
|
|
|
|
|
новичок
      
участник
Last Login: 24.10.2006 17:34
Сообщ.: 4,
Visits: 8
|
|
WSADATA lpWSAData; SOCKET s; AnsiString query;
query += "GET http://bnm.md/apps/ofexch_xml.jsp?lang=2 HTTP/1.0\r"; query += "Accept: */*\r"; query += "Accept-Language: ru \r"; query += "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r"; query += "Host: bnm.md\r"; query += "Proxy-Connection: Keep-Alive\r\r"; // Инициализация библиотеки Ws2_32.dll. if (WSAStartup(MAKEWORD(2,2),&lpWSAData)!=0){ ShowMessage("Не могу подключить библиотеку!"); return; } // Поучаем IP адрес по имени хоста struct hostent* hp; hp=gethostbyname("bnm.md"); // Открываем сокет s=socket(AF_INET, SOCK_STREAM, 0); if (s==INVALID_SOCKET){ ShowMessage("Не могу открыть сокет"); return; } // Заполняем структуру sockaddr_in struct sockaddr_in ssin; memset ((char *)&ssin, 0, sizeof(ssin)); ssin.sin_family = AF_INET; ssin.sin_addr.S_un.S_un_b.s_b1 = hp->h_addr[0]; ssin.sin_addr.S_un.S_un_b.s_b2 = hp->h_addr[1]; ssin.sin_addr.S_un.S_un_b.s_b3 = hp->h_addr[2]; ssin.sin_addr.S_un.S_un_b.s_b4 = hp->h_addr[3]; ssin.sin_port = htons(80); // Соединяемся с хостом if(connect(s, (sockaddr *)&ssin, sizeof(ssin))==-1){ ShowMessage("Не удалось соединиться с хостом!"); return; } // Отправляем запрос серверу int cnt=send(s,query.c_str(),query.Length(),0); // Проверяем, не произошло ли ошибки при отправке запроса на сервер if (cnt==SOCKET_ERROR){ ShowMessage("Произошла ошибка при отправке запроса на сервер!"); return; } // Получаем ответ с сервера --------------------------------- WSADATA lpWSAData; SOCKET s; AnsiString query;
query += "GET http://bnm.md/apps/ofexch_xml.jsp?lang=2 HTTP/1.0\r"; query += "Accept: */*\r"; query += "Accept-Language: ru \r"; query += "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r"; query += "Host: bnm.md\r"; query += "Proxy-Connection: Keep-Alive\r\r"; / Инициализация библиотеки Ws2_32.dll. if (WSAStartup(MAKEWORD(2,2),&lpWSAData)!=0){ ShowMessage("Не могу подключить библиотеку!"); return; } // Поучаем IP адрес по имени хоста struct hostent* hp; hp=gethostbyname("bnm.md"); // Открываем сокет s=socket(AF_INET, SOCK_STREAM, 0); if (s==INVALID_SOCKET){ ShowMessage("Не могу открыть сокет"); return; } // Заполняем структуру sockaddr_in struct sockaddr_in ssin; memset ((char *)&ssin, 0, sizeof(ssin)); ssin.sin_family = AF_INET; ssin.sin_addr.S_un.S_un_b.s_b1 = hp->h_addr[0]; ssin.sin_addr.S_un.S_un_b.s_b2 = hp->h_addr[1]; ssin.sin_addr.S_un.S_un_b.s_b3 = hp->h_addr[2]; ssin.sin_addr.S_un.S_un_b.s_b4 = hp->h_addr[3]; ssin.sin_port = htons(80); // Соединяемся с хостом if(connect(s, (sockaddr *)&ssin, sizeof(ssin))==-1){ ShowMessage("Не удалось соединиться с хостом!"); return; } // Отправляем запрос серверу int cnt=send(s,query.c_str(),query.Length(),0); // Проверяем, не произошло ли ошибки при отправке запроса на сервер if (cnt==SOCKET_ERROR){ ShowMessage("Произошла ошибка при отправке запроса на сервер!"); return; } // Получаем ответ с сервера --------------------------------- int rr=1; char result_ptr[1000000]; AnsiString xml = ""; do{ rr = recv(s, result_ptr, sizeof(result_ptr),0); if(rr > 0){ xml = (xml+ result_ptr).c_str(); } //free(result_ptr); }while(rr != 0); free(result_ptr); // Деинициализация библиотеки Ws2_32.dll WSACleanup();
ShowMessage(xml); int rr=1; char result_ptr[1000000]; AnsiString xml = ""; do{ rr = recv(s, result_ptr, sizeof(result_ptr),0); if(rr > 0){ xml = (xml+ result_ptr).c_str(); } //free(result_ptr); }while(rr != 0); free(result_ptr); // Деинициализация библиотеки Ws2_32.dll WSACleanup();
ShowMessage(xml);В ответе пишет мол хост неверный! У меня уже голова кругом идет от этого сервака!
|
|
|
|
|
новичок
      
участник
Last Login: 24.10.2006 17:34
Сообщ.: 4,
Visits: 8
|
|
| Bazile, спасибо разобрался с твоей помощью!
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| [тема перенесена в форум по C++]
|
|
|
|