Нужно получать данные с сайта (наличие и стоимость товара у поставщика)
Админ сайта прислал фрагменты кода на PHP:

Как это сделать на 1С 8.3.8?

Делаю:

```1c
    НТТР_Connect = Новый HTTPСоединение("http://api.имя_сайта.com");

    // 1.2
    ПараметрыАвторизации = Новый Соответствие;
    ПараметрыАвторизации.Вставить("username","Login");
    ПараметрыАвторизации.Вставить("password","PSW");

    Заголовки = новый Соответствие;
    Заголовки.Вставить("header", "Content-type: application/x-www-form-urlencoded\r\n");
    Заголовки.Вставить("method", "POST");
    Заголовки.Вставить("content", ПараметрыАвторизации);

    HTTP_Запрос = Новый HTTPЗапрос("/auth/token", Заголовки);
    HTTP_Ответ = НТТР_Connect.Получить(HTTP_Запрос);
    Токен = HTTP_Ответ.ПолучитьТелоКакСтроку();
```

ошибка при вызове метода получить: Ошибка работы с Интернет: Couldn't resolve host name

как правильно на 1С 8.3.8 реализовать этот PHP код?
---
Попробуйте убрать "http://" отсюда НТТР_Connect = Новый HTTPСоединение("http://api.имя_сайта.com");
---
Кажется, причина в этом
http://forum.infostart.ru/forum15/topic76414/message1790856/#message1790856
---
Новый HTTPЗапрос("/auth/token", Заголовки);
/auth/token - это по вашему имя сайта ?
---
Нет, конечно. Но имя сайта указано в HTTPСоединение.. Если в HTTPЗапрос напишу имя сайта полностью, то ошибка все равно сохраняется.
---
Попробуйте убрать "http://" отсюда НТТР_Connect = Новый HTTPСоединение("http://api.имя_сайта.com");
---
Да!
Теперь получаю ответ от сервера. Но не токен. Ошибка 405...
Или это 1С выдает такой код состояния?...
---
Не тот метод используете - нужно не Получить(get), а ОтправитьДляОбработки (post), но это не точно =)
405 ошибка веб-сервера, о том что метод не доступен.
---
сейчас написал так:

```1c
    НТТР_Connect = Новый HTTPСоединение("api.имя_сайта.com");
    ПараметрыАвторизации = "username=Name&password=PSW";

    HTTP_Запрос = Новый HTTPЗапрос("/auth/token");
    HTTP_Запрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded\r\n");
    HTTP_Запрос.УстановитьТелоИзСтроки(ПараметрыАвторизации, КодировкаТекста.UTF8);
    HTTP_Ответ = НТТР_Connect.ОтправитьДляОбработки(HTTP_Запрос);
```

код состояния - 400.
может быть еще причина кроется в том, что конфигурация в режиме совместимости 8.2.16?
---
Установите Fiddler, в нем можно посмотреть какой запрос реально уходит в сервис.
А также из него можно выполнять запросы, как получится в нем получить рабочий запрос/ответ, тогда и реализовывать его в 1С.
---
сейчас поищу этот Fiddler...
---
Установил Fiddler. И вот, что выясняется.

1С отправляет такой запрос:

POST http://api.имя_сайта.com/auth/token HTTP/1.1
Host: api.имя_сайта.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAAB7IIogUABQAwAAAACAAIACgAAAAFASgKAAAAD0FSSUVM­LU1HQVJJRUw=
User-Agent: 1C+Enterprise/8.3
Accept: */*
Connection: Keep-Alive
Content-Type: application/octet-stream
Content-Length: 48

username=Name&password=ххххххх

А нужно, чтобы запрос был такой!:

POST /auth/token HTTP/1.1
Host: api.имя_сайта.com
Content-type: application/x-www-form-urlencoded
Cache-Control: no-cache

username=Name&password=ххххххх
---
покажите код 1С, формирующий запрос.
---
ПараметрыАвторизации = "username=Name&password=xxxxxxxx";
  URL_Сервера = "api.имя_сайта.com";
  НТТР_Connect = Новый HTTPСоединение(URL_Сервера,,,,,,,Ложь);
  HTTP_Запрос = Новый HTTPЗапрос("/auth/token");
  HTTP_Запрос.УстановитьТелоИзСтроки(ПараметрыАвторизации, КодировкаТекста.UTF8);
  HTTP_Ответ = НТТР_Connect.ОтправитьДляОбработки(HTTP_Запрос);
---
у вас в Fiddler'е в запросе из 1С отличается Content-Type, остальные заголовки служебные, они мешать не должны.

Попробуйте так:
ЗаголовкиФайла = Новый Соответствие;
ЗаголовкиФайла.Вставить("Content-type","application/x-www-form-urlencoded");
ПараметрыАвторизации = "username=Name&password=xxxxxxxx";
URL_Сервера = "api.имя_сайта.com";
НТТР_Connect = Новый HTTPСоединение(URL_Сервера,,,,,,,Ложь);
HTTP_Запрос = Новый HTTPЗапрос("/auth/token",ЗаголовкиФайла);
HTTP_Запрос.УстановитьТелоИзСтроки(ПараметрыАвторизации, КодировкаТекста.UTF8);
HTTP_Ответ = НТТР_Connect.ОтправитьДляОбработки(HTTP_Запрос);
---
поправил код. Теперь он такой:

```1c
    URL_Сервера = "api.имя_сайта.com";
    НТТР_Connect = Новый HTTPСоединение(URL_Сервера,,,,,,,Ложь);
    Сообщить("Создали соединение с сервером");
    ПараметрыАвторизации = "username=Name&password=xxxxxxxx";

    HTTP_Запрос = Новый HTTPЗапрос("/auth/token");
    HTTP_Запрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
    HTTP_Запрос.УстановитьТелоИзСтроки(ПараметрыАвторизации, КодировкаТекста.UTF8);
    HTTP_Ответ = НТТР_Connect.ОтправитьДляОбработки(HTTP_Запрос);
```

POST теперь такой:

POST http://api.имя_сайта.com/auth/token HTTP/1.1
Host: api.имя_сайта.com
Proxy-Authorization: NTLM TlRMTVNTUAABAAAAB7IIogUABQAwAAAACAAIACgAAAAFASgKAAAAD0FSSUVM­LU1HQVJJRUw=
User-Agent: 1C+Enterprise/8.3
Accept: */*
Connection: Keep-Alive
Content-type: application/x-www-form-urlencoded
Content-Length: 48

username=Name&password=xxxxxxxx

ошибка 400.

Тексты запросов отличаются еще и первой строкой
Первая строка должна быть такая: POST /auth/token HTTP/1.1
без указания полного адреса
---
Не обязательно, что первая строка является проблемой.
Скопируйте запрос, который формируется 1С в Fiddlere и выполните его.
Потом удаляйте отличающиеся строки, чтобы понять, какая строка мешает.
---
теперь вообще ничего не понимаю....

выполняется код на 1С. Смотрю в фидлере - ошибка 400. Копирую из фидлера запрос и вставляю его ничего не меняя в фидлер же - выполняется!

Выходит - из 1С не выполняется, а из фидлера выполняется....
---
Может проблема в прокси?
---
Т.е? В параметре прокси?
---
Новый HTTPСоединение(Сервер, Порт, Пользователь, Пароль, Прокси, Таймаут, ЗащищенноеСоединение);
Еще можно явно попробовать указать порт.
---
хм.... нет же никакого прокси...
другое дело, что 1С сама по умолчанию что-нибудь лепит....

посмотрю сейчас этот момент....
---
если написать так:

НТТР_Connect = Новый HTTPСоединение(URL_Сервера,,,, Новый ИнтернетПрокси(Ложь) ,,,Ложь);

то все равно ошибка 400, но только через фидлер уже не проходит
---
А если так:
НТТР_Connect = Новый HTTPСоединение(URL_Сервера, 80,,, Новый ИнтернетПрокси(Истина) ,,,Ложь);
---
нет, эффекта нет

я размышляю в чем может быть причина того, что на запрос, отправленный из 1С я получаю ошибку 400, а на тот же самый запрос без байта изменений, но отправленный из фидлера - получаю ожидаемый ответ...
---
Обычно в таком случае проблема в прокси/порте.
Прокси для доступа в интернет используется?
Если используется, можно попробовать явно прописать все поля, пользователь, пароль и тд.
Если не используется, попробовать указать Неопределено.
---
нет, прокси не используется.

на сайте, с которого мне нужно получить информацию, используется (если я правильно выражаюсь) ) JSON... Может с этим что-то связано? Может как хитрым способом кодировать нужно тело?....
---
Если из фиддлера тот же самый запрос работает, то имхо, проблема не в теле запроса.
---
Кажется, причина в этом
http://forum.infostart.ru/forum15/topic76414/message1790856/#message1790856
---
Да! Завелось!
Вот что значит совместными усилиями решать проблему!)
Спасибо!

Буду теперь читать ответы с сервера)
---
Отлично =)
---
Вряд ли дело в платформе. Скорее сам запрос некорректный, можно попробовать так:
```1c
    Новый HTTPЗапрос("/auth/token?username=Name&password=PSW")
```

А вообще лучше документацию к api почитать.
---
/auth/token?username=Name&password=PSW

результат - код состояния 400.
документации по api нет - только фрагменты кода и дампы-образцы запроса POST...
попробую пообщаться с админом сайта....