4. Коды ошибок при приеме запроса

advertisement
Corporate LBS API description v.0.2. 20/01/2016
Page 1 of 5
1. Описание протокола для доступа к интерфейсу
«Корпоративный LBS»
Доступ к сервису LBS (Location Based Service) осуществляется через платформу CPA
(Content Provider Access).
Общая схема взаимодействия показана на рис.1.
1
3
2
4
5
Client
6
CPA
LBS
Рис.1
При доступе к сервису используется асинхронный механизм, протокол XML,
транспортный уровень HTTP или HTTPS.
Клиентское приложение посылает запрос на позиционирование (1). Сервис в ответ
возвращает статус подтверждения запроса Accepted (2). Это означает, что запрос принят
и поставлен в очередь на обработку. После обработки запроса (3, 4) результат
передается на клиентское приложение (5). В качестве подтверждения обработки
результата, необходимо вернуть статус подтверждения принятия (6).
Интерфейс представляет из себя Web-ссылку http://193.41.60.77:8080/lbsapi/CorpLbs,
которая принимает POST-запрос.
Параметром запроса является также URL, для возвращения результата.
Для авторизации пользователя используется basic авторизация, также проверяется
разрешения доступа с клиентского IP-адреса.
1.1.
Формат запроса на позиционирование
<message mid="MID" action="ACTION" callBackUrl="URL">
<MSISDN>MSISDN</MSISDN>
<body content-type="text/plain"></body>
</message>
Где,
 MID – уникальный идентификатор клиентского запроса;
 URL – ссылка, на которую должен быть возвращен результат;
 MSISDN – номер, который необходимо позиционировать, в случае action=locate;
 ACTION – имя действия. Доступны следующие действия:
 locate - позиционирование SIM-карты;
 change-passwd - смена пароля, при этом автоматически будет
сгенерирован новый пароль и отослан на тарификационный номер
посредством SMS;
 check-url - проверка обратной связи. При таком значении во время
приема запроса будет произведено тестовое соединение с сервером
Corporate LBS API description v.0.2. 20/01/2016
Page 2 of 5
партнера по указанному URL. При успешном соединении, будет
послано тестовое сообщение, в ответ на которое платформа ожидает
получить подтверждение успешного приема сообщения (п.1.2). При
неуспешном тестовом запросе будет возвращена соответствующая
ошибка в ответном статусе.
1.2.
Формат подтверждения принятия запроса/результата
<report>
<status error=”error” errorCode=”errorCode”>status</status>
</report>
Где,
 status – статус, может быть:
 Accepted – запрос принят успешно;
 Rejected – запрос не принят;
 errorCode – код ошибки, если такая возникла.
 error – описание ошибки, если такая возникла.
1.3.
Формат передачи результата
<message rid=”RID” mid=”MID”>
<service>message-status</service>
<status dateIso8601="yyyy-mm-ddThh24:mi:ss+ZONE" date=” Day, dd
Mon yyyy hh24:mi:ss TZR” source=”errorSource”
errorCode=”errorCode” error=”error”>status</status>
<data><![CDATA[RESPONSE]]></data>
</message>
Где,





status - статус обработки запроса.
 Successful – успешно;
 Unsuccessful - неуспешно.
errorCode – код ошибки, если такая возникла;
error – описание ошибки, если такая возникла;
errorSource – источник ошибки, может быть CPA (ошибка на нашей платформе)
или LBS (ошибка на сервисе позиционирования);
RESPONSE – ответ от платформы LBS.
2. Формат ответа с данными
Ответ с координатами платформа CPA передает в том виде, в котором их получает от
системы LBS.
<PD>
<TIME UTC_OFF='+0300'>20100705122103</TIME>
<LEV_CONF>80</LEV_CONF>
<SHAPE>
<CIRCULARARCAREA SRSNAME='www.epsg.org#4326'>
<STOPANGLE>360</STOPANGLE>
<COORD>
<Y>030 25 32E</Y>
<X>50 27 33N</X>
</COORD>
Corporate LBS API description v.0.2. 20/01/2016
Page 3 of 5
<OUTRADIUS>442</OUTRADIUS>
<STARTANGLE>0</STARTANGLE>
<INRADIUS>0</INRADIUS>
</CIRCULARARCAREA>
</SHAPE>
</PD>
TIME – время позиционирования.
Тег SHAPE – содержит в себе описание фигуры покрытия.
CIRCULARARCAREA – это одна из возможных фигур позиционирования, на практике я встречал только
такую фигуру. Это сектор в круге или круг как частный случай.
COORD – координаты центра круга.
OUTRADIUS – внешний радиус, в метрах.
INRADIUS - внутренний радиус, в метрах.
STARTANGLE – начальный угол сектора.
STOPANGLE – конечный угол сектора.
3. Пример работы с системой.
3.1.
Запрос:
POST /lbsapi/CorpLbs HTTP/1.0
Content-Length: 157
Authorization: Basic dGVzdDE6dHR0
<message mid="870" action="locate"
callBackUrl="http://10.44.71.152:8082/">
<MSISDN>380675485516</MSISDN>
<body content-type="text/plain"></body></message>
3.2.
Успешное подтверждение запроса:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.4; JBoss-4.0.3SP1 (build: CVSTag=JBoss_4_0_3_SP1 date=200602151717)/Tomcat-5.5
Content-Type: text/xml;charset=ISO-8859-1
Content-Length: 96
Date: Mon, 05 Jul 2010 09:04:27 GMT
Connection: close
<?xml version="1.0" encoding="UTF-8"?>
<report>
Corporate LBS API description v.0.2. 20/01/2016
Page 4 of 5
<status errorCode="0">Accepted</status>
</report>
3.3.
Запрос не принят:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.4; JBoss-4.0.3SP1 (build: CVSTag=JBoss_4_0_3_SP1 date=200602151717)/Tomcat-5.5
Content-Type: text/xml;charset=ISO-8859-1
Content-Length: 122
Date: Mon, 05 Jul 2010 09:18:36 GMT
Connection: close
<?xml version="1.0" encoding="UTF-8"?>
<report><status error="Number not allowed" errorCode="4">Rejected</status></report>
3.4.
Успешный результат выполнения запроса:
POST / HTTP/1.1
User-Agent: Jakarta Commons-HttpClient/3.0-rc3
Host: 127.0.0.1:8082
Content-Length: 603
Content-Type: text/xml; charset=UTF-8
<?xml version='1.0' encoding="UTF-8"?>
<message nodeId="0" mid="870" rid = "0">
<service>message-status</service>
<status dateIso8601="2010-07-05T12:21:03+02" date="Mon, 05 Jul 2010 09:21:03 GMT" >Successful</status>
<data>
<![CDATA[
<PD>
<TIME UTC_OFF='+0300'>20100705122103</TIME>
<LEV_CONF>80</LEV_CONF>
<SHAPE>
<CIRCULARARCAREA SRSNAME='www.epsg.org#4326'>
<STOPANGLE>360</STOPANGLE>
<COORD>
<Y>030 25 32E</Y>
<X>50 27 33N</X>
</COORD>
<OUTRADIUS>442</OUTRADIUS>
<STARTANGLE>0</STARTANGLE>
<INRADIUS>0</INRADIUS>
</CIRCULARARCAREA>
</SHAPE>
</PD>]]>
</data>
</message>
3.5.
Неуспешный результат выполнения запроса:
POST / HTTP/1.1
User-Agent: Jakarta Commons-HttpClient/3.0-rc3
Host: 127.0.0.1:8082
Content-Length: 282
Content-Type: text/xml; charset=UTF-8
<?xml version='1.0' encoding="UTF-8"?>
<message nodeId="0" mid="870" rid = "0">
<service>message-status</service>
<status dateIso8601="2010-07-05T12:07:52+02" date="Mon, 05 Jul 2010 09:07:52 GMT" source="LBS" errorCode="5"
error="ABSENT SUBSCRIBER">Unsuccessful</status>
</message>
Corporate LBS API description v.0.2. 20/01/2016
Page 5 of 5
4. Коды ошибок при приеме запроса
Текст ошибки предназначен исключительно для анализа администратором, а не
программным обеспечением.
Код
1
2
3
4
5
6
Формат текста ошибки
Bad state: [STATE]
Bad callBackUrl
Service not allowed
Number not allowed
Bad action
Error while connecting callBack Url …
7
8
Bad callBack answer. Url: …
[MSISDN] exists in queue
100
Описание
Недопустимое состояние профиля
Неверный формат атрибута callBackUrl
Базовая услуга отключена. Обычно при низком балансе на счету.
Запрашиваемый номер не принадлежит корпорации
Недопустимое значение атрибута action
Ошибка в процессе тестирования обратного вызова указанного
URL
Неверный ответ в результате обратного вызова указанного URL
Запрос с запрашиваемым номером еще обрабатывается
Внутренняя ошибка системы.
Download