Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Отправка массива через POST-запрос / 5 сообщений из 5, страница 1 из 1
22.06.2013, 13:41
    #38307039
donpauls
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка массива через POST-запрос
Не могу разобраться, как отправить массив через 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
25.06.2013, 09:32
    #38309002
donpauls
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка массива через POST-запрос
Shocker.Pro, Дмитрий77, Antonariy,
Поможете?..
...
Рейтинг: 0 / 0
25.06.2013, 16:22
    #38309821
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка массива через POST-запрос
Извини, я тоже не могу перевести этот пример в VB6. Если бы была готовая программа или страничка, которая умеет отправлять данные в нужном формате, можно было бы подсмотреть, что она отправляет, и воспроизвести формат, а так это гадание по облакам.

Лучше обратиться к создателям сервиса.
...
Рейтинг: 0 / 0
25.06.2013, 16:29
    #38309843
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка массива через POST-запрос
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
02.07.2013, 10:54
    #38316763
donpauls
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка массива через POST-запрос
скукотища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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Отправка массива через POST-запрос / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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