![]() |
|
HTTPСоединение получить в файл | ☑ | ||
---|---|---|---|---|
0
PuhUfa
17.03.16
✎
14:28
|
Есть некий web сервис который отвечает на запрос формата:
http://[ip-адрес]/cgi/data.php?format=[вид запроса]&[параметры запроса]&return=xml return=xml – неизменный параметр, определяет формат ответа. Ответ формируется в формате XML. Ответ возвращается клиенту HTTP в текстовом виде. В браузере запрос выполняется и я вижу в нем xml ответа. Но вот при выполнении: Соединение = Новый HTTPСоединение(СтрокаHTTPСоединение); HTTPЗапрос = Новый HTTPЗапрос; HTTPЗапрос.АдресРесурса = СтрокаЗапросаИдентификации; Ответ = Соединение.Получить(СтрокаЗапросаИдентификации, ИмяВыходногоФайла); В файле я получаю только: <?xml version='1.0' encoding='windows-1251' ?> <data> </data> Как правильно получить такой же ответ как я получаю в браузере? |
|||
1
Serginio1
17.03.16
✎
14:32
|
Для чистоты эксперимета попробуй http://catalog.mista.ru/public/466052/
|
|||
2
lamme
17.03.16
✎
14:33
|
Прокси = Новый ИнтернетПрокси();
Прокси.Установить("http",СокрЛП(ПроксиСервер),ПроксиПорт); Прокси.Пользователь = СокрЛП(ПроксиИмяПользователя); Прокси.Пароль = СокрЛП(ПроксиПарольПользователя); Попытка HTTP = Новый HTTPСоединение(СерверИсточник,,,, Прокси); Исключение Сообщить("Ошибка подключения: " + ОписаниеОшибки()); КонецПопытки; Адрес = "nАдрес"; ИмяВходящегоФайла = "файл"; Попытка HTTP.Получить(Адрес, ИмяВходящегоФайла); Исключение Сообщить("Ошибка получения ссылки на адреса: " + ОписаниеОшибки()); Возврат Ложь; КонецПопытки; |
|||
3
Serginio1
17.03.16
✎
14:33
|
ссылки на файлы здесь Использование классов .Net в 1С для новичков
|
|||
4
lamme
17.03.16
✎
14:34
|
попробуй еще - СтрокаЗапросаИдентификации - без http://[ip-адрес]
те СтрокаЗапросаИдентификации = /cgi/data.php?format=[вид запроса]&[параметры запроса]&return=xml |
|||
5
lamme
17.03.16
✎
14:36
|
а вот СерверИсточник=http://[ip-адрес]
|
|||
6
PuhUfa
17.03.16
✎
14:37
|
(4) так и делаю:
СтрокаHTTPСоединение = [ip-адрес] СтрокаЗапросаИдентификации = /cgi/data.php?format=[вид запроса]&[параметры запроса]&return=xml |
|||
7
Записьдампа
17.03.16
✎
14:46
|
СпособКодированияСтроки.КодировкаURL
|
|||
8
PuhUfa
17.03.16
✎
14:58
|
(2) если у меня нет прокси? web ресурс находится в VipNet
|
|||
9
PuhUfa
17.03.16
✎
15:07
|
(7) С кодированием бъет 404 ошибку
|
|||
10
Записьдампа
17.03.16
✎
15:10
|
(9) Тогда бери фидлер и смотри чем отличается запрос браузера о твоего запроса
|
|||
11
lamme
17.03.16
✎
15:54
|
(0)
еще есть убери http из СерверИсточник чтобы остался только www.хххххх |
|||
12
Записьдампа
17.03.16
✎
16:04
|
(11) Судя по тому, что он xml таки получает, в адрес сервера он попадает правильно.
(9) Вангую, кстати, что ты закодировал всю СтрокаЗапросаИдентификации вместо кодирования значений параметров [вид запроса] и [параметры запроса] по отдельности. |
|||
13
PuhUfa
17.03.16
✎
16:21
|
(10) Из фидлер:
Браузер: Accept: text/html, application/xhtml+xml, */* Accept-Language: ru-RU User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0) Accept-Encoding: gzip, deflate Host: 11.0.0.1 DNT: 1 Connection: Keep-Alive Cookie: b=b 1с: Proxy-Authorization: NTLM TlRMTVNTUAABAAAAt7II4gkACQAqAAAAAgACACgAAAAGAvAjAAAAD4+KV09SS0dST1VQ User-Agent: 1C+Enterprise/8.3 Host: 11.0.0.1 Accept: */* Connection: Keep-Alive |
|||
14
PuhUfa
17.03.16
✎
16:23
|
(12) Да, кодировал целиком строку -)
|
|||
15
Записьдампа
17.03.16
✎
16:47
|
(14) Ну дык сделай правильно =]
|
|||
16
Записьдампа
17.03.16
✎
16:51
|
(13) Там кроме заголовков еще много что есть. RAW покажи.
|
|||
17
Serginio1
17.03.16
✎
17:04
|
(14) Не пробовал 1?
|
|||
18
Serginio1
17.03.16
✎
17:05
|
Кстати Cookie: b=b
|
|||
19
PuhUfa
17.03.16
✎
17:22
|
(15) то что доктор прописал -)
правда если параметр только числовой. Если параметр имеет русское значение то после кодировки он превращается в &im=%D0%94%D0%BC%D0%B8%D1%82 Но это видимо нужно поиграться с 3м параметром КодироватьСтроку |
|||
20
Записьдампа
17.03.16
✎
17:34
|
(19) Да.
%D0 в начале каждой буквы намекает на то, что у тебя сейчас строка в UTF-8 передается. Надо понять, в чем сервер ожидает русское и указать его. Или попробовать принудительно указать в заголовке: Content-Type: application/x-www-form-urlencoded ; charset=UTF-8 |
|||
21
PuhUfa
17.03.16
✎
17:44
|
(20) ну когда я из браузера делаю запрос, я и пишу русскими, и в фидлере показывает нормально.
Правда для числовых параметров тоже все показывало одинаково, но пока КодироватьСтроку не вставил из 1С не раабоало -) |
|||
22
PuhUfa
17.03.16
✎
19:17
|
Обманул я... Когда я делаю запрос напрямую из браузера, фиддлер показывает вот так:
GET http://11.0.0.1//cgi/data.php?format=by_fio&fam= &im= &ot= Сюда копипастит пробелами, а в фиддлере это квадратики |
|||
23
PuhUfa
17.03.16
✎
19:40
|
(20) Все, поборол кодировку и теперь получает и при русских параметрах. Спасибо большое, с меня причитается -)
|
|||
24
Serginio1
17.03.16
✎
21:57
|
А стоило почитать статью
Для каждого стр Из структура Цикл сб.AppendFormat("{0}={1}&",HttpUtility.UrlPathEncode(стр.Ключ),HttpUtility.UrlPathEncode(стр.Значение),0); КонецЦикла; стр=сб.ToString(0,сб.Length-1); Сообщить(стр); //Сделаем запрос по относительному пути //Так как основной путь уже прописан в BaseAddress res = Client.GetStringAsync(стр).Result; |
|||
25
Записьдампа
18.03.16
✎
07:37
|
.net не нужен =]
|
|||
26
Serginio1
18.03.16
✎
08:11
|
(25) Согласен. Но если бы статью прочитал, то понял бы, что нужно строки кодировать.
|
|||
27
PuhUfa
18.03.16
✎
08:18
|
(26) в качестве спс - плюсанул -)
|
|||
28
Записьдампа
18.03.16
✎
08:20
|
(26) Нет. Если бы с http работал, то понял бы. А твой русско-наглицский диалект программирования заставляет народ разрабатывать методом тыка =]
|
|||
29
Serginio1
18.03.16
✎
08:42
|
(28) Так он и не работал. Кроме того у HTTPClient просто больше возможностей. И это тоже нужно знать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |