Имя: Пароль:
1C
1С v8
Веб сервис - 8.3
0 taylergyver
 
27.05.15
11:42
добрый день, осваиваю веб-сервисы

необходимо осуществить POST запрос в переменной text по адресу http://www.typograf.ru/webservice/

описание здесь
http://www.typograf.ru./webservice/about/

Все время получаю ответ, что либо использую Get, либо не передаю текст.

делаю так

СтруктураURI = СтруктураURI(ПолныйАдресРесурса);
HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт);
    
Заголовки = Новый Соответствие();
Заголовки.Вставить("text=", "привет");

HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере);
Результат = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос,);

Ответ = Результат.ПолучитьТелоКакСтроку();

наведите на путь истинный
1 Asmody
 
27.05.15
11:44
(0) Заголовки тоже на сервер отправить бы
2 Serginio1
 
27.05.15
12:33
А без кирилицы?
3 taylergyver
 
27.05.15
12:34
сделал так

    СтруктураURI = СтруктураURI(ПолныйАдресРесурса);
    HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт);
    
    HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере);
        
    HTTPЗапрос.Заголовки.Вставить("Vary","Accept-Encoding,User-Agent");
    HTTPЗапрос.Заголовки.Вставить("Content-Encoding","gzip");
    HTTPЗапрос.Заголовки.Вставить("Content-Length","2548");
    HTTPЗапрос.Заголовки.Вставить("Keep-Alive","timeout=5, max=100");
    HTTPЗапрос.Заголовки.Вставить("Connection","Keep-Alive");
    HTTPЗапрос.Заголовки.Вставить("Content-Type","text/html; charset=WINDOWS-1251");


    HTTPЗапрос.УстановитьТелоИзСтроки("text:" + "Привет олег ",,ИспользованиеByteOrderMark.Использовать);
    Результат =  HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос,);

Ответ = Результат.ПолучитьТелоКакСтроку();

какие заголовки нужны я не знал, посмотрел в
Fiddler


сейчас выдает 408 ошибку, ошибка запроса
4 Serginio1
 
27.05.15
12:35
HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере,Заголовки );
5 Serginio1
 
27.05.15
12:44
6 taylergyver
 
27.05.15
12:52
СтруктураURI = СтруктураURI(ПолныйАдресРесурса);
    HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт);
    
    Заголовки = Новый Соответствие();
    Заголовки.Вставить("Vary","Accept-Encoding,User-Agent");
    Заголовки.Вставить("Content-Encoding","gzip");
    Заголовки.Вставить("Content-Length","43");
    Заголовки.Вставить("Keep-Alive","timeout=5, max=100");
    Заголовки.Вставить("Connection","Keep-Alive");
    Заголовки.Вставить("Content-Type","text/html; charset=WINDOWS-1251");
    
    HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере,Заголовки);
    
    HTTPЗапрос.УстановитьТелоИзСтроки("text;" + "Привет",,ИспользованиеByteOrderMark.Использовать);

    Результат =  HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос,);

    Ответ = Результат.ПолучитьТелоКакСтроку()

ошибка запроса пропала, но все равно пишет, что я ничего не передал.
я правильно понимаю что для передачи используется УстановитьТелоИзСтроки или нет?
7 Serginio1
 
27.05.15
12:59
https://helpf.pro/faq/view/1298.html
Посмотри Передача параметров методом POST.
8 vhl
 
27.05.15
13:13
(0) заголовок запроса от текста запроса отличаешь?
9 taylergyver
 
27.05.15
13:19
(8) в (6) исправил
10 Serginio1
 
27.05.15
13:51
Заголовки.Вставить("Content-Type", "text/html;charset=utf-8");
11 Serginio1
 
27.05.15
13:53
HTTPЗапрос.УстановитьТелоИзСтроки("text=Привет",,ИспользованиеByteOrderMark.Использовать);
12 vhl
 
27.05.15
13:57
Так по идее должно работать
    HTTPСоединение = Новый HTTPСоединение("http://www.typograf.ru";);
    Заголовки = Новый Соответствие();
    Заголовки.Вставить("Content-type","application/x-www-form-urlencoded");
    HTTPЗапрос = Новый HTTPЗапрос("webservice/",Заголовки);
    HTTPЗапрос.УстановитьТелоИзСтроки("text=" + "hello");
    РезультатЗапроса  = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
    Сообщить(РезультатЗапроса.ПолучитьТелоКакСтроку());
13 taylergyver
 
27.05.15
14:02
(12)
[Fiddler] DNS Lookup for "http" failed. System.Net.Sockets.SocketException Запрошенное имя верно, но данные запрошенного типа не найдены
14 taylergyver
 
27.05.15
14:06
(12) надо было убрать http
    HTTPСоединение = Новый HTTPСоединение("http://www.typograf.ru";);

ошибка пропала, но пишет все равно что не передали
15 vhl
 
27.05.15
14:24
(14) Почему-то 1с добавляет заголовок "Proxy-Authorization". Как эту хрень отключить-  не заню, но если делать запрос без этого заголовка, то работает
16 Serginio1
 
27.05.15
14:25
ПолныйАдресРесурса="http://www.typograf.ru";;

ПутьНаСервере="/webservice";
    HTTPСоединение = Новый HTTPСоединение(ПолныйАдресРесурса);
    
    Заголовки=Новый Соответствие;
    Заголовки.Вставить("Vary","Accept-Encoding,User-Agent");
    Заголовки.Вставить("Content-Encoding","gzip");
    Заголовки.Вставить("Keep-Alive","timeout=5, max=100");
    Заголовки.Вставить("Connection","Keep-Alive");
    Заголовки.Вставить("Content-Type", "text/html;charset=utf-8");
    
    ТекстДляОтправки="text=Test";
//    Заголовки.Вставить("Content-Lenght", СтрДлина(ТекстДляОтправки));
    
    HTTPЗапрос = Новый HTTPЗапрос(ПутьНаСервере,Заголовки);
  
    HTTPЗапрос.УстановитьТелоИзСтроки(ТекстДляОтправки);
    Результат =  HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);

Ответ = Результат.ПолучитьТелоКакСтроку("UTF-8");
Сообщить(ответ);
17 taylergyver
 
28.05.15
10:16
(15) вернулся к задаче, знает кто как убрать этот заголовок?
18 taylergyver
 
28.05.15
11:13
делается это в файле
inetcfg
19 taylergyver
 
28.05.15
17:18
вот пример рабочего кода

    HTTPСоединение = Новый HTTPСоединение("typograf.ru");
    
    Заголовки = Новый Соответствие();
    Заголовки.Вставить("Content-type","application/x-www-form-urlencoded");
    
    HTTPЗапрос = Новый HTTPЗапрос("webservice/",Заголовки);
    
    ТелоPOSTЗапроса = "&text=" + "hello" ;
    
    HTTPЗапрос.УстановитьТелоИзСтроки(ТелоPOSTЗапроса, КодировкаТекста.ANSI);
    
    РезультатЗапроса  = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
    
    Сообщить(РезультатЗапроса.ПолучитьТелоКакСтроку());
20 Serginio1
 
28.05.15
17:59
(19) 16 возвращает

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.typograf.ru/webservice/">here</a>.</p>;
<hr>
<address>Apache/2.2.22 Server at http://www.typograf.ru Port 80</address>
</body></html>
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn