Имя: Пароль:
1C
1C 7.7
v7: Передача файлов через http
0 NickAn
 
25.12.13
01:42
Ниже мой код. Нашел подобный пример на http://www.1cpp.ru/forum/YaBB.pl?num=1366372962/8. Первая часть кода срабатывает, я передаю параметры авторизации, а вторая не хочет, говорит нет авторизации, т.е. на следующее подключение авторизация пропала. SetCredentials не работает.

ФайлДанных = "data.txt";
    //ПутьКФайлуДанных = КаталогПользователя() + ФайлДанных;
    ПутьКФайлуДанных = "D:\"+ФайлДанных;
    
    АдресСайта="http://mysite.ua/import/";;
    
    ЗапросАвторизации    = "?login=yes&type=catalog&mode=checkauth";
    ПараметрыПОСТ = "login=log&pass=pas";
    WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
    WinHttp.Open("POST",АдресСайта,0);
    WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");//windows-1251
    WinHttp.SetRequestHeader("Content-length", "" + СтрДлина(ПараметрыПОСТ));
    WinHttp.Send(ПараметрыПОСТ);
    
    Текст = СоздатьОбъект("Текст");
    ОтветСервера = WinHttp.ResponseText();
    Рез = ОтветСервера;
    Текст.ДобавитьСтроку(Рез);     
    Текст.Записать(ПутьКФайлуДанных);
    
    
    oADOStream = СоздатьОбъект("ADODB.Stream");
    oADOStream.Type = 1; //тип данных - Binary
    oADOStream.Open();

    oADOStream.LoadFromFile(ПутьКФайлуДанных);

    ПараметрыФайла = "type=catalog&mode=file&filename="+ФайлДанных;
    WinHttp.Open("POST", АдресСайта+ПараметрыФайла, 0);//+ "?type=catalog&mode=file&filename="+ФайлДанных
    WinHttp.SetCredentials("log", "pas", 0); //не работает
    WinHttp.SetRequestHeader("Content-type", "application/octet-stream");
    WinHttp.SetRequestHeader("Content-length", "" + oADOStream.Size);
    WinHttp.Send(oADOStream); ОтветСервера = WinHttp.ResponseText();
1 Torquader
 
25.12.13
20:40
На каждое подключение авторизация должна идти заново, так как каждая команда Open чистит все установленные заголовки в запросе.
Тем более, что авторизация ожидается в параметрах запроса, а не в установке полей авторизации.