Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: kak poslat xml-file cherez https i poluchit drugoj nazad?  (Прочитано 18163 раз)
0 Пользователей и 10 Гостей смотрят эту тему.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« : 03-12-2004 16:41 » 

Ljudi, SOS!

Sejchas prishel nachalnik i postawil zadachku - neberuchku  Я шокирован!

est xml - file u nas, est kakoj-to https kak swjaz s bankom.
Zadacha - poslat nash file po https i poluchit otwet w wide opjat ge xml - file.  Я шокирован!
Kak eto delaetsja??? Esli eto elementarno - prostite radi boga za glupij wopros, prosto ja nikogda nichego w etom naprawlenii ne delala (nu ne ljublju ja internet - programmirowanie  Так больше нельзя... ).
Zaranee spasibo!
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 03-12-2004 20:31 » 

Можно отослать файл через форму (<INPUT TYPE=FILE ...>), а назад послать просто файл (вместо страницы), или все-таки страницу, но с сылкой на этот файл.

Кроме того, есть http метод PUT, но использовать его с брайзером не удастся. Если есть собственное приложение, которое делает http запросы, то PUT вполне подойдет.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #2 : 05-12-2004 20:44 » 

RXL,

ja ponjatija ne imeju, chto u menja dolgno bit   Так больше нельзя...  Mne izwestna postanowka zadachi - est xml - fail (on uge gotow k otprawke i ja znaju, gde on legit), kotorij nado otprawit po https. Kak ja eto realizuju - nikogo ne wolnuet. T.e. w etom sluchae, esli ja prawilno ponjala,  ja mogu ispolzowat metod PUT. Chego ja wse rawno ne pojmu - ti goworish, chto PUT - eto metod iz HTTP, a u menja idet rech o https.

Moget, dge-to est gotowij primer ?
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 06-12-2004 08:53 » 

Malaja, лучше попробуй сначала первый вариант - вероятность гиморроя на стороне сервера меньше. Там используется POST, content-type: multipart/mixed. О HTTP, его методах и формате описано в RFC (если не ошибаюсь, 2616). К сожалению, сейчас не могу рассказать подробнее.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #4 : 06-12-2004 09:39 » 

Togda samij glupij wopros - kakim obrazom eto ispolzowat?
Dlja menja eto oznachaet - na forme dolgen bit kakoj-to control, kotoromu ja mogu ustanowit wse eti parametri. Sootwetstwenno wopros - kakoj control?
Ili eto ne tak?
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 06-12-2004 20:37 » 

Malaja, не знаю что там с фрмами, а делается все просто: шлешь заголовок, шлешь данные, ждешь и принимаешь ответный заголовок и затем данные. write() + read().
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
mixa
Гость
« Ответ #6 : 10-12-2004 06:38 » 

To Malaja:
Я боюсь, что без влазанья в протокол тебе не обойтись. То что предлагает RXL, это вообще не писать программы. Сделать маленькую страничку HTML, что тоже должно работать.
Код:

<HTML>
<BODY>
<FORM method='POST' ENCTYPE='multipart/form-data' action='твой урл'>

<input type='file' name='Userfile' class='toolsbare'>
<input type='submit' value='Send'>

</FORM>
</BODY>
</HTML>


Выбираешь файл - посылаешь. В ответ получаешь файл, который браузер должен спросить тебя куда сохранить и все. Но в твоей постановке вопроса мало информации. Я думаю, что тебе стоит позвонить туда и выяснить самой. В каком Encoding-е, в каком виде ?
В общем протокол HTTP очень тривиален. Представь себе текстовый файл где в начале идут строки вида "имя : значение", что такое имя и значение могут быть такого типа:

Content-Type: text/xml
Content-Length: 567543

Потом идет обязательная пустая строка, отделяющая этот самый заголовок от непосредственно от данных. И сами данные. К примеру тот файл что тебе надо послать. В принципе если заслать эти строки на 80 порт сервера - то в ответ можно получить нечто подобное в ответ.

Если пока не страшно, продолжим.

Отдельный разговор первая строчка заголовка. Она не попадает под вид "имя : значение". Она содержит в себе что непосредственно нужно сделать серверу. Дело в том что протокол НТТР это протокол вопросов ответов - ты посылаешь серверу запрос - с указанием того что нужно сделать, а он тебе ответ.

Есть 2 основных типов вопросов - GET и POST. GET - это запросить у сервера какой-нибудь файл, POST это способ отправить что-нибудь на сервер. Надо выяснить как они от тебя ожидают получить файл.
Записан
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #7 : 13-12-2004 09:27 » 

mixa,

spasibochki za otwet, izwini, chto ne sreagirowala srazu - zeluju nedelju s grippom prowaljalas, sil ne bilo wstat, o programmirowanii rechi prosto ne bilo  Я шокирован!

Tak, takoe wpechatlenie, chto tut woprosow bolshe, cjem otwetow, t.e. mne dlja nachala prosto ne hwataet informazii.
Delo w awtorisazii shetow po kreditkam. Est kontora, kotoraja imeet razreshenie ot bankow prowerjat kreditki pri popitke imi rasplatitjsja na wshiwost.

T.e. est url, na kotorij nado sinhronno poslat opredelennij file (struktura fila zaranee ogoworena, mne ego gotowjat - zagonjajut tuda dannie kreditki i prochuju erundu, kotoruju tam ogidajut prochest, posemu tut hot ne bolit golowa u djatla) i ego ge zabrat (pri etom na tom url on budet shitan i izmenen, t.e budet wnesena infa, naskolko kreditka godna k upotrebleniju).
Wot i wse, chto ja znaju. Pri etom nikakih jawnih html - form bit ne dolgno, moja programma rabotaet kak server, t.e. poluchaet zadanie otprawit file - otprawljaet i tut ge zabiraet otwet, o chem i soobshaet wiziwajushej programme.
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
mixa
Гость
« Ответ #8 : 17-12-2004 17:49 » new

Malaja, Ты тоже извини. Смотри - тебе надо все-таки позвонить самой в ту кантору и поговорить что они хотят от тебя. Обрати внимание на специфические слова HTTP протокола, когда они тебе будут отвечать. Типа POST, GET, Content-Type. Мне бы не хватило того что ты сказала. Хотя я знаю HTTP не плохо. Для начинающих есть какие-то классики в нутри MFC, типа CHTTPClient. А то что ты на HTML обиделась - зря. Что делает браузер - берет файл, делает из него HTTP заголовок и посылает. То что приходит в ответ, показывает, а если не может показать - то сохраняет на диске. Это в точности что должна сделать твоя программка. Попробуй так.
Записан
Serega
Гость
« Ответ #9 : 18-12-2004 21:04 » 

Неее ребята, все далеко не так просто Отлично

HTTP это цветочки, девушке же нужен HTTPS, а это уже другой разговор

поскольку мне тоже понадобился будем вместе решать

все легко и просто когда secure connection уже установлено и можно кидаться заголовками направо и налево, проблема в том как установить такое соединение

недолгие поиски в гугле дали линки для размышления Ага
в Java создать соединение оказалось очень просто
для C++ нашел библиотечку от W3C, может пригодится
также нашел ActiveX клиента для SSL, но он шароварный и у меня сервер стоит дешевле Отлично
и вот он ! наконец то ! я добрался до php клиента SSL

на этом поиски завершаются, все линки в /var/log
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 19-12-2004 01:08 » 

Существуют opensource и freeware SSL-библиотеки: libeay, openssl и др.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #11 : 20-12-2004 08:43 » 

Serega,

spasibo za linki - sejcha sposmotrju. Отлично
Odin wopros :
Цитата

все линки в /var/log

gde eto??? kak ja tuda s etoj stranizi popadu??? :oops:

RXL,

spasibo za nazwanija, sejchas posmotrju, chto eto takoe i kak ispolzuetsja.  Отлично
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Serega
Гость
« Ответ #12 : 20-12-2004 09:51 » 

про /var/log это шутка Отлично
Записан
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #13 : 20-12-2004 10:16 » 

Serega,

wse jasno Жжешь  slawa bogu, a to ja uge dumala, chto i ostatki mozgow i soobragalowki isparilis  Показываю язык
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #14 : 20-12-2004 11:26 » 

Serega,

izwini, ja chto-to nikak ne mogu wizwat twoj mail, chtobi poslat tebe infu (moj outlook menja posilaet grubo i ne po-genski   Ха-ха-ха )
Mne prishel mail ot cheloweka, u kotorogo est primer togo, chto nam nado. Mi s nim sejchas obshalis w icq. Esli tebja eto interesuet - kin mne po mailu swoj mail - adres, chtobi ja tebe skinula primer.
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
mixa
Гость
« Ответ #15 : 22-12-2004 21:51 » 

Малая - если еще не справилась - вот примерчик - посылаем XML - получаем XML. В ответ, не обесудьте, получаем сообщение об ошибке - потому как запрос я перевал - не светить же мне свой настоящий пароль. Но идея ясна - посылаем - принимаем.

Код:
#include <Winsock2.h>
#include <iostream.h>
#include <Winbase.h>
#include <stdio.h>

#pragma comment( lib, "Ws2_32" )

int main(int, char**)
{

cout << "---------- Start" << endl;

static int err = 0;

WSADATA wsaData;
int iResult;

iResult = WSAStartup( MAKEWORD(1,1), &wsaData );
err = errno;
if(iResult != 0) { cout << "bad WSAStartup" << endl; return 1; }

// create socket
SOCKET s;
s = socket(AF_INET, SOCK_STREAM, 0 );
if(s == INVALID_SOCKET) { cout << "bad socket" << endl; return 1; }

// set address
struct sockaddr_in SockAddr;
ZeroMemory (&SockAddr, sizeof (SockAddr));


SockAddr.sin_family = AF_INET;
SockAddr.sin_port = htons(5555);
SockAddr.sin_addr.S_un.S_addr = inet_addr("192.115.201.235");

iResult= connect(s, (sockaddr*) &SockAddr, sizeof(SockAddr));
err = errno;
if(iResult != 0) { cout << "bad connect" << endl; return 1; }

char data[] = "<?xml version=\"1.0\"?><MainRequest Version=\"3.3\">"\
          "<Login><MSISDN>brbrbr</MSISDN></Login></MainRequest>";

char TMP[512];

strcpy(TMP, "POST /LocatioNet/ApplicationServer HTTP 1/0\r\n");
send(s, TMP, strlen(TMP), 0);

strcpy(TMP, "Host: 192.115.201.235\r\n");
send(s, TMP, strlen(TMP), 0);

strcpy(TMP, "Content-type: text/xml\r\n");
send(s, TMP, strlen(TMP), 0);

sprintf(TMP, "Content-length: %d\r\n", strlen(data));
send(s, TMP, strlen(TMP), 0);

strcpy(TMP, "Accept: */*\r\n");
send(s, TMP, strlen(TMP), 0);

strcpy(TMP, "\r\n");
send(s, TMP, strlen(TMP), 0);

strcpy(TMP, data);
send(s, TMP, strlen(TMP), 0);


cout << "---------- Answer" << endl;

int actual_len;
char buff[512];
while(0 != (actual_len = recv (s, (char* )&buff, sizeof(buff) - 1, 0 ) ) ) {
buff[actual_len] = 0;
cout << buff;
}

cout << endl << "---------- End" << endl;

return 0;
}
Записан
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #16 : 23-12-2004 08:07 » 

Mixa,

esli ja prawilno ponimaju, ti organizuesh obichnoe socket - soedinenie, w kotorom ti znaesh IP i port servera, i dalshe gonish infu i poluchaesh otwet. A kak ge togda wsja eta erunda s raznizej w http i https? T.e. esli ja prawilno ponimaju, socket wed nichego o security ne znaet, posemu infa idet w otkritom wide?

I eshe para elemetarno tupih woprosow (prosti menja , neumnuju) Ага
1) objazatelno li ukaziwat "MainRequest Version=\"3.3\"
2) chto oznachaet "POST /LocatioNet/ApplicationServer HTTP 1/0" i dlja chego eto nado
3) analogichno - "Accept: */*\r\n"
Prosto naskolko ja wigu, iz xmla tolko zagolowochnaja stroka, a ostalnoe k nemu ne otnositsja, poetomu nikak ne pojmu, chto ge eto takoe ;-(
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
mixa
Гость
« Ответ #17 : 24-12-2004 07:16 » 

Ой, Малая, поставила, ты меня в тупик своим HTTPS. Я не делал его ни разу. Я понимаю - что идея таже -только все надо кодировать. Насчет всего остального - то то что я посылаю туда ( всякие POST, ACCEPT ), то это сформированый HTTP запрос (Читай мой предыдущий пост). POST это заголовок запроса - обозначает что я хочу делать - в частности я закачиваю данные на сервер. Строчка после POST-а, то куда я хочу это заслать - как правило это программа которая эти данные принимает. Эту строчку я беру из УРЛ ( полный УРЛ был таким http://HTTP://192.115.201.235:5555/LocatioNet/ApplicationServer ). Accept - я говорю серверу о том что я желаю получить в ответ - */* обозначает - что буду рад любому ответу. Это поле особо не требуется - так по настоящему сервер может выбрать из нескольких типов представления одних и тех же данных то что ты можешь переварить. Например один и тотже екст может быть представлен просто текстом, или в форме HTML или даже XML. Ты можешь сказать что принимаешь только текст - и тогда сервер пришлет тебе текст, а не будет пытаться послать HTML, или все иожет быть наооборот. Но сейчас это особо не нужно - потому что скорее всего твой сервер это поле игнорирует - он знает что ему пришлют XML и он ответит всегда XML. А про MainRequest - я совсем ничего не знаю - это что-то из XML - мой сервер так просит и я ему посфлаю не вдаваясь в подробности  Отлично
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #18 : 24-12-2004 19:39 » 

Разница http и https только в ssl обертке.
Https делается через библиотеку ssl. Минимальная работа с ней - инициализация посредством нескольких ф-ий и io через ее ф-ии.
Malaja, попробуй, для примера, openssl. Работать с ним не сложно - в доках есть работающие примеры. Во всяком случае, у меня затруднений не было.
Пару лет назад сбирал openssl для win в vc6 и был удивлен, что для сборки требуется ActivePerl (продукт бесплатный), но надеюсь, что они упростили сборку. Это следствие того, что opensource проекты чаще портируют под win из *nix, чем обратно.
« Последнее редактирование: 24-12-2004 19:41 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #19 : 26-12-2004 18:28 » 

mixa,
bolshoe spasibo za objasnenija! Ja hot nemnogo teper ponimaju, chto tam proishodit! Ага

RXL,
spasibo za sowet! Ja sejchas ehse posmotrju tot primer, kotorij mne dali, a to ja eshe do etogo ne doshla (zabili drugimi proektami), togda mnogoe stanet ponjatnej.
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines