Скачать 0.57 Mb.
|
Запросы для REST-сервисаПример всех запросов XML/JSON для основных типовых методов сервиса вы найдете в этом разделе. Основная рекомендация – используйте JSON, с POST запросом в XML слишком много ограничений и условий. Основные замечания при составлении и отправки JSON-запросов сервису
В некоторых случаях при вызове методов формат даты может быть в формате /Date(1449672181000+0300)/. В текущей версии API используется майкрософтовский сериализатор, он так выполняет сериализацию дат https://msdn.microsoft.com/ru-ru/library/bb412170(v=vs.110).aspx Это число миллисекунд в часовом поясе GMT по-обычному (не летнему) времени, прошедшее с 1 января 1970 г. Это число может быть отрицательным для представления более раннего времени. Часть строки "+0500" является необязательной и показывает, что это время в формате Local, т. е. при десериализации оно должно быть преобразовано в местный часовой пояс. Если эта часть строки отсутствует, время десериализуется как UTC. Собственно, число (в данном случае "0500") и его знак (+ или -) игнорируются." На сайте есть функция перевода даты для указанного формата (см. метод CreatePreadvice) http://test-api.hermes-dpd.ru/rest_main.html function getMSJSONDate(iso8601Date) { var date = new Date(iso8601Date); var utcPart = ''; //utc if (iso8601Date.length > 23) { utcPart = iso8601Date.substring(23); } var offset = date.getTimezoneOffset() * 60 * 1000; var withOffset = date.getTime(); var withoutOffset = withOffset - offset; return "/Date(" + withOffset + utcPart + ")/"; } В следующей версии API будет использоваться сериализатор Newtonsoft.Json и формат дат ISO 8601 Основные замечания при составлении и отправки XML-запросов сервису
xmlns=""> /> 21321 1321 321 1321 935002 Запрос на PHPerror_reporting(E_ALL); try { $user = "testlogin"; $pass = "testpassword"; $bucode = "1000"; GetParcelShops_Rest($user, $pass, $bucode); //GetParcelShops_Soap($user, $pass, $bucode); CreatePreadvice_Rest($user, $pass, $bucode); } catch (SoapFault $fault) { $error = "Fault: (faultcode: {$fault->faultcode}\n" . "faultstring: {$fault->faultstring})"; echo $error; } catch (Exception $exception) { echo " " . $exception; } function GetParcelShops_Rest($user, $pass, $bucode) { echo "REST request... (json) "; //------------------------------------------------------------------ $location = "https://test-api.hermes-dpd.ru/WS/RestService.svc/rest"; $access_token = base64_encode($user.":".$pass); $method = "/GetParcelShops"; $url = "https://test-api.hermes-dpd.ru/WS/RestService.svc/rest" . $method; $data = json_encode(array('businessUnitCode' => $bucode)); echo $data; // set up the request context $options = array("http" => array( "method" => "POST", "header" => array("Authorization: Basic " . $access_token, "Content-Type: application/json"), "content" => $data )); $context = stream_context_create($options); // make the request $response = file_get_contents($url, false, $context); echo " REST response... "; echo $response; } function CreatePreadvice_Rest($user, $pass, $bucode) { echo "REST request... (json) "; //------------------------------------------------------------------ $location = "https://test-api.hermes-dpd.ru/WS/RestService.svc/rest"; $access_token = base64_encode($user.":".$pass); $method = "/CreatePreadvice"; $url = "https://test-api.hermes-dpd.ru/WS/RestService.svc/rest" . $method; //just grab json from http://test-api.hermes-dpd.ru/rest_main.html //and decode it to obj or use as context in a request $data = '{ "preadvices": [ { "BusinessUnitCode": ' . $bucode . ', "CashOnDeliveryCurrency": "RUB", "CashOnDeliveryValue": 100, "ClientOrderNumber": "TEST_1", "ClientParcelNumber": "TEST_1", "CustomStoragePeriod": 0, "CustomerAdditionalAddressInfo": "test adr info", "CustomerAdditionalPhoneNumber": "test adr phone", "CustomerApartmentNumber": "0", "CustomerBuildingNumber": "13", "CustomerCity": "MOSCOW", "CustomerConstructionNumber": "3", "CustomerCountryCode": "RUS", "CustomerEmail": "nomail@ya.ru", "CustomerFarthersName": "Namegiven X", "CustomerFirstName": "Name X", "CustomerFrameNumber": "1", "CustomerLandlinePhoneNumber": "+7 (499) 681-12-52", "CustomerMobilePhoneNumber": "+7 (499) 681-12-52", "CustomerNumber": "21321321", "CustomerRegion": "noregion", "CustomerStreet": "dokukina", "CustomerStreetType": "st.", "CustomerSubregion": "X", "CustomerSurname": "Surname X", "CustomerZipCode": "101000", "DirectDistributionCenterCode": "", "DispatchDate": null, "ExtraParams": null, "InsuranceCurrency": "RUB", "InsuranceValue": 1000, "OrderPlacementTimestamp": "/Date(1450794905000)/", "ParcelBarcode": "", "ParcelHeight": 10, "ParcelLength": 10, "ParcelWeight": 1, "ParcelWidth": 10, "ParcelshopCode": "935002", "ReturnDistributionCenterCode": "", "Services": ["DIRECT_DELIVERY"] } ] }'; //check json //var_dump(json_decode($data, JSON_UNESCAPED_UNICODE)); echo $data; // set up the request context $options = array("http" => array( "method" => "POST", "header" => array("Authorization: Basic " . $access_token, "Content-Type: application/json"), "content" => $data )); $context = stream_context_create($options); // make the request $response = file_get_contents($url, false, $context); echo " REST response... "; echo $response; } function GetParcelShops_Soap($user, $pass, $bucode) { echo " SOAP request... "; $wsdl = "https://test-api.hermes-dpd.ru/WS/WebService.svc?singleWsdl"; $location = "https://test-api.hermes-dpd.ru/WS/"; $options = array("trace" => 1); $soap = new SoapClient($wsdl, $options); //security header $header_part = " xmlns:wsse='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'> xmlns:wsu='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd'> $soap_var_header = new SoapVar($header_part, XSD_ANYXML, null, null, null); $soap_header = new SoapHeader('https://test-api.hermes-dpd.ru/WS/', 'wsse', $soap_var_header); $soap->__setSoapHeaders($soap_header); //available methods //var_dump($soap->__getFunctions()); // call function defined in soap server $soap -> GetParcelShops(array("businessUnitCode" => $bucode)); echo " ".htmlspecialchars($soap->__getLastRequest()); echo " SOAP response... "; echo " ".htmlspecialchars($soap->__getLastResponse()); } ?> Убедитесь, что для php включены модули расширения soap и openssl. Запрос можно выполнить на любых онлайн-сервисах, например, на http://phpfiddle.org/ Исходный код доступен по ссылке http://phpfiddle.org/main/code/e8ht-sjbw |
Система менеджмента качества компании-производителя сертифицирована в мировой сертификационной сети iqnet и имеет сертификат ведущего... | Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования «Челябинский... | ||
Настоящий документ описывает требования к xml файлам передачи в электронном виде сведений о документе нбо, содержащемся в транспортном... | Производится полное библиографическое описание каждого документа, представляемого в мэб для размещения в сводном каталоге | ||
Настоящее Руководство пользователя лрм сэд нрд (по «Луч») описывает возможности клиентского рабочего места Системы электронного документооборота... | ... | ||
«Требования к форматам файлов, используемых при взаимодействии между органами Федерального казначейства и участниками бюджетного... | Реквизиты документа, удостоверяющего личность: серия (при наличии) и номер документа, дата выдачи документа, наименование органа,... | ||
С начала 2015 года Украина начнет официальный выпуск биометрических паспортов для своих граждан. Основной особенностью документа... | Данный документ представляет собой описание Интернет-версии системы Банк+Клиент ielba райффайзенбанка (версия 6). В нем рассматриваются... |
Поиск Главная страница   Заполнение бланков   Бланки   Договоры   Документы    |