Форум программистов, компьютерный форум, киберфорум
PHP: API
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/32: Рейтинг темы: голосов - 32, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 13.02.2012
Сообщений: 5
1

Yandex API

28.03.2012, 13:10. Просмотров 6227. Ответов 5
Метки нет (Все метки)


Добрый день форумчанам!
Просьба откликнуться имеющим опыт в написании Яндекс API приложений. Ну или другим гуру =)
Итак, необходимо отправить POST-запрос средствами php, в теле запроса содержится простенький xml (или json), ответ от сервера тоже в виде xml/json. Вот что рекомендует мануал Yandex API:
Цитата

Пример запроса рекомендаций для полученной выборки товаров для пятого места на карточке товаров:

PHP
1
2
3
4
5
6
7
8
9
10
11
POST
https://api.partner.market.yandex.ru/v1/cam...ecommended.json?
position=5&oauth_token=4f009f4e680a433dbf6ddb6c39258099&oauth_login=test-login&
oauth_client_id=47e4d0745753440b9d811b409871b876
Host api.partner.market.yandex.ru
Content-Type application/json
 
{"offerNames":[
"Tefal 539625",
"Clatronic CM 3372"
]}
Допустим, для начала я хочу просто вывести ответ сервера на экран. Пишем:

Цитата
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$request = htmlspecialchars("<?xml version='1.0' encoding='UTF-8'?><offers><name>Какой-то товар</name></offers>"); 
$context = stream_context_create(
array (
'http' => array (
'method' => 'POST',
'header' => 'Content-Type: application/xml',
'header' => 'Host: api.partner.market.yandex.ru',
'header' => 'Authorization: OAuth 
oauth_token="мой токен", 
oauth_client_id="мой id", 
oauth_login="мой логин"',
'content' => $request
 
)
)
);
$result = file_get_contents('https://api.partner.market.yandex.ru/v1/campaigns/мой номер компании/bids/recommended.xml?positions=5',0,$context);
echo $result;
?>
При этом выдается ошибка
Цитата
PHP
1
Warning: file_get_contents(https://api.partner.market.yandex.ru/v1/campaigns/номер компании/bids/recommended.xml?positions=5) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 415 Unsupported Media Type in \home\localhost\www\post\testPOST.php....
То есть, если судить по тексту, то "Сервер не понимает формата отправляемых данных". Пробовал отправлять как xml так и json. Для чего обработал тело htmlspecialchars'ом - думаю, объяснять не стоит.
И еще - самое удивительное, что с этими же данными (регистрационными и таким же телом xml) в REST-console'и всё отрабатывается ОК.
Есть идеи, что я делаю не так?
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2012, 13:10
Ответы с готовыми решениями:

API Yandex переводчик
Учусь работать с JSON и для практики решил написать переводчик на основе API Яндекс переводчика. ...

Кто то работал с money yandex api?
Уважаемые форумчане, утро доброе. Есть вопрос. Есть проект, где нужно прикрутить яндекс мани...

расстояние между городами на php yandex api
какой функции можно посчитать расстояние?

API yandex "Оригинальные тексты" добавление
Пытаюсь настроить автоматизированное добавление текстов в Яндекс. Зарегистрировал приложение,...

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы Fullstack-разработчиков на PHP‌
5
40 / 39 / 5
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1
28.03.2012, 13:15 2
вот эту строчку
https://api.partner.market.yan... paigns/мой номер компании/bids/recommended.xml?positions=5
надо либо перекодировать в утф-8 либо все пробелы заменить %20
0
1 / 1 / 0
Регистрация: 13.02.2012
Сообщений: 5
28.03.2012, 13:59  [ТС] 3
нет, она то без пробелов, там просто номер, эт я шифруюсь так то есть там просто "123456". Другое дело, что может быть стоит попробовать в самом теле xml так сделать..
Спасибо, буду пробовать!
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
28.03.2012, 16:39 4
не надо никаких file_get_contents.

У них там есть nuSOAP. Вот его и используй. API работает и отвечает в другом режиме, нежели просто запрос на сервер.
0
1 / 1 / 0
Регистрация: 13.02.2012
Сообщений: 5
28.03.2012, 16:53  [ТС] 5
Решил проблему через curl.
1
0 / 0 / 0
Регистрация: 22.07.2008
Сообщений: 4
16.01.2014, 15:45 6
Цитата Сообщение от Igor776 Посмотреть сообщение
Решил проблему через curl.
Добрый день! если решил можешь запостить, сюда кусок кода с запросом, а то не понятно как в запрос

вставить:

Javascript
1
2
3
4
{"offerNames":[
"Tefal 539625",
"Clatronic CM 3372"
]}
что-то синтаксисом
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2014, 15:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Steam API - как можно получить медиану цен через API?
Ребят, как можно получить медиану цен через API ? Интересует количество продаж за последний день....

Yandex api.directory.yandex.net создание почтового ящика
Добрый день. Пишу скрипт для создания почтовых ящиков на Яндекс.Коннект с использованием API...

Yandex REST API
Здравствуйте! Разбираюсь с Yandex REST API. Я смог разобраться, как работать через get-запросы,...

Авторизация в Yandex, API
Доброй ночи уважаемые программисты! Уже который день бьюсь головой об стол, не могу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.