powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Отправка массива через POST-запрос
5 сообщений из 5, страница 1 из 1
Отправка массива через POST-запрос
    #38307039
donpauls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не могу разобраться, как отправить массив через POST-запрос.
Строковые данные отправляются нормально, а массив - нет (сервер возвращает ошибку).
Прежде чем писать в техподдержку сервиса, хотел бы уточнить, может это я что-то не так делаю?

Имеется пример, но не знаю как его правильно перевести на VB:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
ACTION=ADD_PERSON
contact = Array(
  'person_name'          => 'Фамилия Имя',
  'person_position'      => 'Должность',
  'person_company_name'  => 'Компания',
  'person_company_id'    => 'ID компании, если известно',
  'contact_data'         => Array (
    'phone_numbers' => Array (
      0 => Array ('number'    => '+7 495 123-45-67'),
      1 => Array ('location'  => 'Work'),
      2 => Array ('number'    => '+7 499 891-01-11'),
      3 => Array ('location'  => 'Mobile')
    ),
    'email_addresses' => Array (
      0 => Array('address'   => 'maks@qsoft.ru'),
      1 => Array('location'  => 'Work')
    ),
    'web_addresses' => Array(
      0 => Array('url' => 'http://www.amocrm.ru')
    ),
    'addresses' => Array(
      'street' => 'Адрес'
    ),
    'instant_messengers' => Array(
      0 => Array('address'   => 'imaddr'),
      1 => Array('protocol'  => 'Skype')
    )
  ),
  'main_user_id'    => 'ID ответственного пользователя',
  'tags'            => 'тег, тег2, тег3'
)


Источник: http://www.amocrm.ru/add-ons/api.php

Я решил сделать вот так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Dim oXMLHTTP As Object
Dim Param as string
Dim adress as string

Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
adress = "https://company.amocrm.ru/private/api/contact_add.php"

oXMLHTTP.Open "POST", adress, False
oXMLHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"

Param = "XML=" & _
"<ACTION>ADD_PERSON</ACTION>" & _
"<contact>" & _
    "<person_name>Новый контакт</person_name>" & _
    "<contact_data>" & _
        "<phone_numbers>" & _
            "<number>1234567890</number>" & _
            "<location>Work</location>" & _
        "</phone_numbers>" & _
    "</contact_data>" & _
    "<main_user_id>94780</main_user_id>" & _
    "<tags>NewCall</tags>" & _
"</contact>"


oXMLHTTP.send (Param)


Прбовал ещё и так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
param = _
"ACTION=ADD_PERSON" & _
"contact[person_name]=Новый контакт" '& _
"contact_data [phone_numbers[number]]=1234567890" & _
"contact_data [phone_numbers[location]]=Work" & _
"main_user_id=94780" & _
"tags=NewCall"


Ничего не выходит. Сервер возвращает ошибку:
Код: xml
1.
2.
3.
<root>
	<result>false</result>
</root>
...
Рейтинг: 0 / 0
Отправка массива через POST-запрос
    #38309002
donpauls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, Дмитрий77, Antonariy,
Поможете?..
...
Рейтинг: 0 / 0
Отправка массива через POST-запрос
    #38309821
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извини, я тоже не могу перевести этот пример в VB6. Если бы была готовая программа или страничка, которая умеет отправлять данные в нужном формате, можно было бы подсмотреть, что она отправляет, и воспроизвести формат, а так это гадание по облакам.

Лучше обратиться к создателям сервиса.
...
Рейтинг: 0 / 0
Отправка массива через POST-запрос
    #38309843
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
donpauls,
ключевые слова php сериализация массива .
псевдокод, "многабукаф"
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
REM псевдокод

rem **** не уверен в необходимости точки-с-запятой после описания не последненго вложенного массива

PHONE_NUMBERS=s:12:"phone_numbers";a:4{
i:0;a:1{s:6:"number";s:16:"+7 495 123-45-67"}; '<-- ****
i:1;a:1{s:8:"location";s:4:"Work"}; '<-- ****
i:2;a:1{s:6:"number";s:16:"+7 499 891-01-11"}; '<-- ****
i:3;a:1{s:8:"location";s:6:"Mobile"}
}

EMAIL_ADDRESSES=s:15:"email_addresses";a:2{
i:0;a:1{s:7:"address";s:13:"maks@qsoft.ru"}; '<-- ****
i:1;a:1{s:8:"location";s:4:"Work"}
}

...

CONTACT_DATA=a:5:{
PHONE_NUMBERS;  '<-- ****
EMAIL_ADDRESSES;  '<-- ****
WEB_ADDRESSES;  '<-- ****
ADDRESSES;  '<-- ****
INSTANT_MESSENGERS
}

contact=a:7{
s:11:"person_name";s:21:"Фамилия Имя";
s:15:"person_position";s:18:"Должность";
...;
s:12:"contact_data";CONTACT_DATA;  '<-- ****
s:12:"main_user_id";s:HZ:"ID ответственного пользователя";
s:4:"tags";s:22:"comma, separated, tags"
}

contact = url_encode ( contact )


params = "ACTION=ADD_PERSON&contact=" & contact

oXMLHTTP.send ( Param )

ЗЫ: с вышеназванным сервисом дела не имел.
...
Рейтинг: 0 / 0
Отправка массива через POST-запрос
    #38316763
donpauls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скукотищаdonpauls,
ключевые слова php сериализация массива .
псевдокод, "многабукаф"
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
REM псевдокод

rem **** не уверен в необходимости точки-с-запятой после описания не последненго вложенного массива

PHONE_NUMBERS=s:12:"phone_numbers";a:4{
i:0;a:1{s:6:"number";s:16:"+7 495 123-45-67"}; '<-- ****
i:1;a:1{s:8:"location";s:4:"Work"}; '<-- ****
i:2;a:1{s:6:"number";s:16:"+7 499 891-01-11"}; '<-- ****
i:3;a:1{s:8:"location";s:6:"Mobile"}
}

EMAIL_ADDRESSES=s:15:"email_addresses";a:2{
i:0;a:1{s:7:"address";s:13:"maks@qsoft.ru"}; '<-- ****
i:1;a:1{s:8:"location";s:4:"Work"}
}

...

CONTACT_DATA=a:5:{
PHONE_NUMBERS;  '<-- ****
EMAIL_ADDRESSES;  '<-- ****
WEB_ADDRESSES;  '<-- ****
ADDRESSES;  '<-- ****
INSTANT_MESSENGERS
}

contact=a:7{
s:11:"person_name";s:21:"Фамилия Имя";
s:15:"person_position";s:18:"Должность";
...;
s:12:"contact_data";CONTACT_DATA;  '<-- ****
s:12:"main_user_id";s:HZ:"ID ответственного пользователя";
s:4:"tags";s:22:"comma, separated, tags"
}

contact = url_encode ( contact )


params = "ACTION=ADD_PERSON&contact=" & contact

oXMLHTTP.send ( Param )

ЗЫ: с вышеназванным сервисом дела не имел.

Спасибо за наводку! Разобрался.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Отправка массива через POST-запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]