|
Веб сервис - 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> |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |