Имя: Пароль:
1C
1С v8
Запрос к сайту
0 Alex_MA
 
10.10.11
13:27
Всем доброго дня!

Как сделать запрос методом post на определенный адрес?

Спасибо за внимание.
1 ДенисЧ
 
10.10.11
13:28
2 Alex_MA
 
10.10.11
13:29
(1)спасибо большое.
3 Alex_MA
 
10.10.11
13:42
мне необходимо отправлять не файлы, а строки типа "851381" и получать строковый ответ.
4 Alex_MA
 
10.10.11
13:59
а что такое адрес скрипта ?
там написано:

Собственно, отправка данных серверу.
   АдресСкрипта = "some_script.php"; //Естественно, следует указать имя своего скрипта.

т.е. в любом случае я должен скрипт на php писать ? Так ?
5 Alex_MA
 
10.10.11
14:16
//Определяем имя файла ответа от веб-сервера
   ИмяФайлаОтвета = КаталогВременныхФайлов() + "answer.tmp";
   
   //Какой-то ранее созданный архив
   ИмяФайлаДанных = "transmission.zip";
   
   //Создаём файл отправки или содержимое POST-запроса.
   ИмяФайлаОтправки = КаталогВременныхФайлов() + "post.txt";
   ФайлОтправки = Новый ЗаписьТекста(ИмяФайлаОтправки, КодировкаТекста.ANSI, Символы.ПС, ЛОЖЬ);

   //Определяем раздел двоичных данных
   ФайлОтправки.ЗаписатьСтроку("777777");
   ФайлОтправки.Закрыть();
   
   
    ЗаголовокHTTP = Новый Соответствие();
   //При необходимости зададим Referer, например таким образом
   СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
   СерверИсточник = НСтр(СтрокаСоединения, "Srvr") + НСтр(СтрокаСоединения, "Ref");
   ЗаголовокHTTP.Вставить("Referer", СерверИсточник);
   
   Сервер = "www.google.ru";
   
   Порт = "80";
   
   Если Истина Тогда
       Прокси = Новый ИнтернетПрокси;
       Прокси.НеИспользоватьПроксиДляЛокальныхАдресов = Истина;
       Прокси.Пароль = "Pwd"; // укажите своё значение
       Прокси.Пользователь = "Usr1"; // укажите своё значение
       НТТР = Новый HTTPСоединение(Сервер, Порт, , , Прокси);
   Иначе
       НТТР = Новый HTTPСоединение(Сервер, Порт);
   КонецЕсли;
   
   
   АдресСкрипта = "some_script.php"; //Естественно, следует указать имя своего скрипта.
   Попытка
       НТТР.ОтправитьДляОбработки(ИмяФайлаОтправки, АдресСкрипта, ИмяФайлаОтвета, ЗаголовокHTTP);
   Исключение
       А = 2;
   КонецПопытки;

   //Удалим файл отправки POST-запроса. Больше он нам не нужен.
   УдалитьФайлы(ИмяФайлаОтправки);

Что то не пойму строку:
АдресСкрипта = "some_script.php"; //Естественно, следует указать имя своего скрипта.
6 Alex_MA
 
10.10.11
14:41
пишет:
Couldn't resolve host name
с чем может быть связано ?
7 Alex_MA
 
10.10.11
15:00
Порт = "80";
   
   Если Истина Тогда
       Прокси = Новый ИнтернетПрокси;
       Прокси.НеИспользоватьПроксиДляЛокальныхАдресов = Истина;
       Прокси.Пароль = "Pwd"; // укажите своё значение
       Прокси.Пользователь = "Usr1"; // укажите своё значение
       НТТР = Новый HTTPСоединение("www.somesite.ru", Порт, , , Прокси, );
   Иначе
       НТТР = Новый HTTPСоединение("", Порт);
   КонецЕсли;
   //
   //
   //Попытка
   //    НТТР.ОтправитьДляОбработки("c:\test.txt", АдресРесурса, ИмяФайлаОтвета, ЗаголовокHTTP);
   //Исключение
   //    Сообщить(ОписаниеОшибки());
   //КонецПопытки;

   ////Удалим файл отправки POST-запроса. Больше он нам не нужен.
   //УдалитьФайлы(ИмяФайлаОтправки);
   
   НТТР = Новый HTTPСоединение("www.somesite.ru", Порт, , , Прокси, );
   
   НТТР.ОтправитьДляОбработки("c:\test.txt", "www.somesite.ru\request_test.php", ИмяФайлаОтвета, );

Выдает: Couldn't connect to server

Что пишу не так ?
8 Asmody
 
10.10.11
15:07
(6) "Couldn't resolve host name" — не может определить ip сервера по имени. Проверяем настройки DNS, пингуем сервер из консоли.
и еще: во втором параметре НТТР.ОтправитьДляОбработки(); указывается только адрес ресурса на сервере, без имени сервера. Т.е. для "www.somesite.ru\request_test.php" имя сервера будет "www.somesite.ru", а адрес ресурса "/request_test.php".
и слеши в интернетах используются прямые
9 Alex_MA
 
10.10.11
16:07
(8)а если сайт пока на виртуальном хостинге ?
10 Alex_MA
 
10.10.11
16:11
Сервер = "www.somesite.ru";
 
Порт = "80";
 
Прокси = Новый ИнтернетПрокси;
Прокси.НеИспользоватьПроксиДляЛокальныхАдресов = Истина;
Прокси.Пароль = "Pwd";
Прокси.Пользователь = "Usr";

НТТР = Новый HTTPСоединение(Сервер, Порт, , , Прокси);
АдресСкрипта = "/request_test.php"; //На самом деле: http://www.somesite.ru/request_test.php

Попытка
 НТТР.ОтправитьДляОбработки("c:\test.txt", "/request_test.php", ИмяФайлаОтвета, ЗаголовокHTTP);
Исключение
 Сообщить(ОписаниеОшибки());
КонецПопытки;

Все правильно ?
11 Alex_MA
 
10.10.11
17:00
подскажите может быть какой нить сайт, где это можно проверить.