accueilforumsdevenir membreEnglish
site search
le programme applis et solutions mobiles autres innovations API actu et événements


  documentation


Dans cette section, vous trouverez toutes les informations techniques dont vous avez besoin pour pouvoir commencer à développer avec l'API.


Nous avons essayé de vous faciliter la tâche en regroupant les informations dans des sections bien définies :  avant de commencer, pour commencer et Développement avancé.

Localisation API

  •     avant de commencer    
  •     pour commencer    
  •     développement avancé    
avant de commencer


Avant de commencer, merci de lire les informations ci-dessous.

Vous pourrez ensuite continuer avec la section 'pour commencer'.


 généralités

 prérequis au service

 accès au service

 rappels sur XML-RPC


généralités


Le Service Localisation d'Orange permet de fournir aux clients de la plate-forme d'accès Orange entreprise la possibilité de localiser les numéros de mobile appartenant à un Groupe Fermé d'Utilisateurs (GFU) entreprise.

Le service de localisation s'appuie sur la technologie du Cell-ID (Identification de cellule) qui donne les coordonnées du barycentre de la cellule à laquelle le mobile est attaché.

La précision de la localisation dépend de la densité du réseau GSM/GPRS d'Orange.

Pour information, le niveau de précision atteint environ 100-500 m en ville et 5-10 km en campagne.

L'information du rayon de la cellule est désormais disponible via le service de localisation depuis début juillet 2005.


A noter :


 La forme d'une cellule dépend de la topologie du relief (obstacles, hauteur de l'antenne relais), de la puissance et de l'angle d'émission. Afin de fournir une donnée utilisable simplement, la forme de la cellule a été schématisée par un cercle dont le service de localisation fournit le rayon (en mètres) et le barycentre.
 Dans le cas d'antenne bi-directionnelle (exemple : sur autoroute), les formes des 2 cellules seront très allongées : il est possible que le mobile soit en dehors de la zone prévisionnelle.
 Aussi, l'information du rayon ournie par le service de localisation Orange est donnée à titre indicatif et non contractuel.


prérequis au service


Les conditions ci-dessous sont nécessaires à l'utilisation du service :

 le client doit souscrire au service de localisation et remplir une fiche de déclaration qu'il devra soumettre à la CNIL
 chaque utilisateur mobile doit signer une attestation de consentement (conserver par le client) et autoriser la localisation de son mobile
 chaque utilisateur mobile doit être listé dans un groupe fermé d'utilisateur
 le terminal doit contenir une carte SIM Orange, être allumé et sous couverture du réseau Orange France


Des informations complémentaires sont disponibles dans la section « développer » accessible en tant que Membre Premium.


accès au service


Ce service est disponible sous la forme d'un Service Web XML-RPC.


  L'authentification au service est basée sur le « Basic HTTP » (cf. RFC 2617) .
  La confidentialité et l'intégrité des données sont garanties grâce au protocole HTTPS (secure HTTP) qui permet de sécuriser toutes les informations circulant au travers du réseau pour accéder au service.




rappels sur XML-RPC


Qu'est-ce que XML/RPC


XML-RPC est avant tout une spécification et des implémentations qui permettent à des applications logicielles s'exécutant sur des systèmes hétérogènes, d'effectuer des appels de procédures (RPC) à travers un réseau de type Internet.


Cette spécification d'appel de procédure utilise le protocole HTTP pour le transport et une instance XML pour l'encodage. Le XML-RPC a été conçu pour être aussi simple que possible, permettant aussi que des structures de données complexes puissent être transmises, traitées et retournées.


La communauté XML-RPC


La communauté XML-RPC est extrêmement active et une liste d'implémentations disponibles en témoigne. Diverses implémentations pour systèmes d'exploitation, langages de programmation, Open Source ou commerciaux sont disponibles.


Pré-requis à l'utilisation du Service Localisation


Avant de pouvoir utiliser le service Web de localisation, un certain nombre de pré-requis sont à vérifier.

L'implémentation XML-RPC choisie doit permettre :
 L'utilisation de SSL pour les requêtes HTTP
 Le passage d'un couple login/password à travers le mécanisme de Basic Authentication.


Implémentations XML-RPC


Les implémentations XML-RPC suivantes satisfont aux critères énoncés ci-dessus :

Java : l'implémentation développée par Apache (http://xml.apache.org/)
Perl : module XML-RPC (http://www.blackperl.com/RPC::XML/)
PHP : extension phpxmlprc (http://phpxmlrpc.sourceforge.net/)
.NET : bibliothèque ouverte XML-RPC.NET(http://www.xml-rpc.net/).


Cette liste n'est pas exhaustive et n'a pas valeur de référence. Pour plus de détail, consultez le site http://www.xmlrpc.org/.

pour commencer


Maintenant que vous avez lu la section "avant de commencer', nous allons vous apporter quelques exemples de codes.

 Java source code
 PHP source code
 C# source code


Code source JAVA


L'implémentation utilisée est celle développée par Apache (http://xml.apache.org/) A noter que le support SSL nécessite des classes supplémentaires (classes JSSE) dans le cas d'une utilisation avec un JDK1.3. Aucune classe supplémentaire n'est nécessaire avec le JDK1.4 et plus.
Pour plus d'informations, voir le § Ressources du guide 'développement avancé'.

LocationClient.java

import java.util.Hashtable;
import java.util.Vector;
import org.apache.xmlrpc.XmlRpcClient;
public class LocationClient
{
   /**Constructor for the LocationClient object */ 
   public LocationClient()
   {
   super();
   }
   public void sendRequest() throws Exception
   {
   // Identifier for the positioning service
 String username="MyUserName"; // example : LOCxxxxxxxx208-01
   // Password for the positioning service
 String password = "MyPassword";
 String application = "MyApplication"; // informative
   // List of mobiles to locate
 Vector msisdns = new Vector();
   // Attention, the MSISDN format is E164 (international)
   // Location of the mobile 336xxxxxxxx corresponds 06xxxxxxxx in France
 msisdns.add("336xxxxxxxx");
   // XML-RPC positioning server URL
 String server_url = "https://api.orangemib.net/location/xmlrpc/service";
   // Name of the localisation method
 String method_name = "location.locate";
 Vector parameters = new Vector();
 parameters.add(username);
 parameters.add(application);
 Hashtable requestInfo = new Hashtable();
 requestInfo.put("geodeticDatum","WGS-84");
 requestInfo.put("coordinateSystem","LL");
 requestInfo.put("positionFormat","DMS0");
//management of the cell shape
//v1.3
requestInfo.put("shape",new Boolean(true));
//v1.3
 parameters.add(requestInfo);
 parameters.add(msisdns);
// Creation of the server object
 XmlRpcClient xmlRpcClient = new XmlRpcClient(server_url);
 xmlRpcClient.setBasicAuthentication(username, password);
// Call the method
 Object result = xmlRpcClient.execute(method_name, parameters);
 Hashtable positions = (Hashtable)result;
 System.out.println("Submitted items " + positions.get("submittedCount"));
 System.out.println("Accepted items " + positions.get("acceptedCount"));
 System.out.println("Operation time " + positions.get("operationTime"));
 System.out.println("Items");
 Vector items = (Vector)positions.get("items");
 for(int i=0;i <items.size();i++){
  Hashtable item = (Hashtable) items.get(i);
  System.out.println("\tItem " +i);
  System.out.println("\tMSISDN " +item.get("msisdn"));
  System.out.println("\tPosition Time " +item.get("positionTime"));
  System.out.println("\tResult Code " +item.get("resultCode"));
  System.out.println("\tResult Description " +item.get("resultDescription"));
  System.out.println("\tType " +item.get("type"));
  if (item.get("type")!=null){
  Hashtable point = (Hashtable) item.get("point");
  Hashtable latitude = (Hashtable) point.get("ll_latitude");
  Hashtable longitude = (Hashtable) point.get("ll_longitude");
//management of the cell shape
//v1.3
             Hashtable shape = (Hashtable) item.get("shape");
//v1.3 : management of the cell shape
  System.out.println("\tLatitude " +latitude.get("direction") 
+ " "+latitude.get("degrees")+"'"+latitude.get("minutes")
+ "'"+latitude.get("seconds")+"\""); System.out.println("\tLongitude " +longitude.get("direction") +" "+longitude.get("degrees")+"'"+longitude.get("minutes")
+"'"+longitude.get("seconds")+"\""); //management of the cell shape //v1.3 System.out.println("\tRayon " +shape.get("radius")); System.out.println("\tStartAngle " +shape.get("start_angle")); System.out.println("\tEndAngle " +shape.get("end_angle")); System.out.println("\tName " +shape.get("name")); //v1.3 } } } /** * LocationClient main class programme * */ public static void main(String[] args) throws Exception { // If you use a proxy, please complete the 2 lines below: // and replace "nom_proxy" and "port_proxy" with the name of the proxy
// and its port //System.setProperty("https.proxyHost", "nom_proxy"); //System.setProperty("https.proxyPort","port_proxy"); LocationClient client = new LocationClient(); client.sendRequest(); } }


Code source PHP


L'implémentation utilisée est basée sur l'extension phpxmlprc (http://phpxmlrpc.sourceforge.net/). A noter que le support SSL nécessite le module "curl". Sa disponibilité dans la distribution est à vérifier.

LocationClient.php

<?php
include("xmlrpc/xmlrpc.inc");
// Identifier for the positioning service
$username = "MyUserName";   // exemple : LOCxxxxxxxx208-01
// Password for the positioning service
$password = "MyPassword";
$application = "MyApplication";
// List of mobiles to locate
$phones = new xmlrpcval(array(
 new xmlrpcval("336xxxxxxxx")
), "array");    // corresponds to the mobile n° 06xxxxxxxx in France
// XML-RPC positioning server URL
$server_hostname = "api.orangemib.net";
$server_path = "/location/xmlrpc/service";
$server_port = 443;
// Name of the localisation method
$method_name = "location.locate";
$client = new xmlrpc_client ($server_path, $server_hostname, $server_port);
$client->setCredentials($username, $password);
$client->setSSLVerifyPeer(false);
$client->setSSLVerifyHost(false);
$req = new xmlrpcmsg($method_name);
$req -> addParam(new xmlrpcval($username));
$req -> addParam(new xmlrpcval($application));
$geodesic = new xmlrpcval(array(
 "geodeticDatum" => new xmlrpcval("WGS-84"),
 "coordinateSystem" => new xmlrpcval("LL"),
 "positionFormat" => new xmlrpcval("DMS0")), "struct"); 
$req -> addParam($geodesic);
$req -> addParam($phones);
print $req->serialize();
$res = $client->send($req, 30, "https");
$value = $res->value();
print $value;
if (!$res->faultCode()) {
    print "Response\n";
    print $res->serialize();
} else {
    print "Fault\n";
    print "Code: " . $res->faultCode() . "\n";
    print " Reason '" .$res->faultString()."'\n";
}
?>


Code source C#


Ce code utilise la bibliothèque ouverte XML-RPC.NET(http://www.xml-rpc.net/).Il faudra donc ajouter en référence à votre projet la bibliothèque 'CookComputing.XmlRpcV2.dll' dans le cas du C# 2 ou 'CookComputing.XmlRpc.dll' dans le cas du C# 1.

using System;
using System.Collections;
using CookComputing.XmlRpc;
namespace Localisation
{
   class Localisation_Sample
   {
      // Definition of the LocationRequestInfo structure
      public struct LocationRequestInfo
      {
         public string geodeticDatum;
         public string coordinateSystem;
         public string positionFormat;
         public bool shape;
      }
      // Definition of the XML-RPC 'location.locate' method
      [XmlRpcUrl("https://api.orangemib.net/location/xmlrpc/service")]
      public interface ILocalisation : IXmlRpcProxy
      {
         [XmlRpcMethod("location.locate")]
         XmlRpcStruct GetLocalisation(
            string enterpriseLogin, 
            string applicationName, 
            LocationRequestInfo requestInfo, 
            string[] msisdns);
      }
      [STAThread]
      static void Main(string[] args)
      {
         // Définition of the login/password, application's name and MSISDNs
         string login = "MyLogin";
         string motdepasse = "MyPassword";
         string applicationName = "LocalisationTest";
         string[] msisdns = new string[]{"336XXXXXXXXX"};
         // Defintion of the type of query
         LocationRequestInfo requestinfo;
         requestinfo.geodeticDatum = "WGS-84";
         requestinfo.coordinateSystem = "LL";
         requestinfo.positionFormat = "DMS0";
         //management of the cell shape
         //v1.3
         requestinfo.shape = true;
         //v1.3
         // Instantiate a proxy
         Localisation proxy =
             (ILocalisation)XmlRpcProxyGen.Create(typeof(ILocalisation));
         // The timestamp sent by Orange is not standard for the library
         // It must be authorised
         proxy.NonStandard = XmlRpcNonStandard.AllowNonStandardDateTime;
         // The authentication goes into the message header
         byte[] credentialBuffer = 
            new System.Text.UTF8Encoding().GetBytes(login + ":" + password);
         proxy.Headers.Add("Authorization", "Basic " + 
            Convert.ToBase64String(credentialBuffer)); 
         // The XML-RPC method is called
         XmlRpcStruct result = 
            proxy.GetLocalisation(login, applicationName, requestinfo, msisdns);
         
         // Display coordinates
         Console.WriteLine("Submitted items " + result["submittedCount"]);
         Console.WriteLine("Accepted items " + result["acceptedCount"]);
         Console.WriteLine("Operation time " + result["operationTime"]);
         Console.WriteLine("Items ");
         Array items = (Array)result["items"];
         for (int i=0; i<items.Length; i++)
         {
            XmlRpcStruct item = (XmlRpcStruct)items.GetValue(i);
            Console.WriteLine("\tItem " + i);
            Console.WriteLine("\tMSISDN " + item["msisdn"]);
            Console.WriteLine("\tPosition Time " + item["positionTime"]);
            Console.WriteLine("\tResult Code " + item["resultCode"]);
            Console.WriteLine("\tResult Description " + item["resultDescription"]);
            Console.WriteLine("\tType " + item["type"]);
            if ((string)item["type"] == "LL")
            {
               XmlRpcStruct point = (XmlRpcStruct)item["point"];
               XmlRpcStruct latitude = (XmlRpcStruct)point["ll_latitude"];
               XmlRpcStruct longitude = (XmlRpcStruct)point["ll_longitude"];
               //management of the cell shape
               //v1.3
               XmlRpcStruct shape = (XmlRpcStruct)item["shape"];
               //v1.3
               Console.WriteLine("\tLatitude " + latitude["direction"] +" "
+ latitude["degrees"]+"'"+ latitude["minutes"]+"'"+ latitude["seconds"]+"\""); Console.WriteLine("\tLongitude " + longitude["direction"]+" "
+ longitude["degrees"]+"'"+ longitude["minutes"]+"'"+ longitude["seconds"]+"\""); //management of the cell shape //v1.3 Console.WriteLine("\tRayon " + shape["radius"]); Console.WriteLine("\tStartAngle " + shape["start_angle"]); Console.WriteLine("\tEndAngle " + shape["end_angle"]); Console.WriteLine("\tName " + shape["name"]); //v1.3 } } } } }

développement avancé


Si vous êtes assez bon developpeur, ou très expérimenté, et que vous vous en êtes sorti de la partie « pour commencer », alors cette section est là pour vous apporter tout ce dont vous pouvez avoir besoin pour vos développements.


 télécharger le manuel de développement avancé de l'API Service Localisation

 

développement avec les SDKs

Merci de télécharger le SDK ainsi que le manuel de référénce et les sources ci-dessous.


Java

zip icon kit de développement Javaarrow (v 1.0)

incluant binaires, documentation, manuel de référence et fichiers source

pdf icon manuel SDK Javaarrow (v 1.0)

C#

 C# documentation


 C# SDK


 C# SDK reference manual


 C# SDK sources

Retrouvez également le SDK des API Orange sur CodePlex. Ce SDK global pour .Net contient des exemples de code, en particulier pour cette API.

PHP

 PHP SDK manual


 PHP SDK reference manual


 PHP SDK sources

à noter...

 Cette API est uniquement 
   destinée aux entreprises
   basées ou ayant une filiale
   en France.

nouveauté... nouveauté...

le SDK PHP maintenant disponible pour
l'API Localisation
utilisez le SDK

 

si quelquechose n'est pas clair

essayez ceci...


 rejoignez le forum

Un forum est à votre disposition pour poser vos questions relatives aux APIs.

Créez un nouveau thème ou discutez avec d'autres membres qui utilisent les API.

accédez au forum


toujours coincé ?


 envoyez-nous un email

Contactez-nous sur developers@orange.com

téléchargez le SDK unifié

Le SDK unifié est l’agrégation des SDK développés pour les Advanced et les Instant  API.

Vous pouvez donc utiliser le SDK unifié pour développer avec les API des deux familles.

téléchargez maintenantlink arrow