Aller au contenu

UPNP et SOAP/XML : Invalid Action


serik

Messages recommandés

Salut à tous,

j'essai désespéremment d'ajouter un mappage de port avec Upnp (j'en ai besoin dans un projet).

La requête que j'envoie :

POST /Public_UPNP_C3 HTTP/1.0
HOST: 192.168.1.1:8000
Content-Length: 632
Content-Type: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:WANIPConnection:1#AddPortMapping"


<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:AddPortMapping xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewRemoteHost></NewRemoteHost>
<NewExternalPort>2110</NewExternalPort>
<NewProtocol>UDP</NewProtocol>
<NewInternalPort>2110</NewInternalPort>
<NewInternalClient>192.168.1.4</NewInternalClient>
<NewEnabled>1</NewEnabled>
<NewPortMappingDescription>UPNPTEST</NewPortMappingDescription>
<NewLeaseDuration>3600</NewLeaseDuration>
</u:AddPortMapping>
</s:Body>
</s:Envelope>

Et la NeufBox me renvoie :

HTTP/1.1 500 Internal Server Error
CONTENT-LENGTH:425
CONTENT-TYPE:text/xml
EXT:
SERVER:Ambit OS/1.0 UPnP/1.0 AMBIT-UPNP/1.0


<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body><s:Fault><faultcode>s:Client</faultcode><faultstring>UPnPError</faultstring><detail><UPnPError xmlns="urn:schemas-upnp-org:control-1-0"><errorCode>401</errorCode><errorDescription>Invalid Action</errorDescription></UPnPError></detail></s:Fault></s:Body></s:Envelope>

Quelle erreur ai-je faite?

Merci à tous.

Lien vers le commentaire
Partager sur d’autres sites

401, 'Authorization Required'

a priori, j'imagine qu'il faudrait s'identifier, ou un truc du genre

L'erreur HTTP est HTTP/1.1 500 Internal Server Error

401 c'est le code erreur de Upnp, qui correspond à Invalid Action.

Mais depuis j'ai trouvé le problème : l'adresse ip se donne en network-byte-order, soit 4.1.168.192.

Le port idem je pense.

En fait j'ai trouvé ça en envoyant une requête GetGenericPortMappingEntry, qui donne cet ordre.

Le problème maintenant, c'est que GetGenreicPortMappingEntry me renvoit l'adresse dans l'ordre normal.

Je vais continuer à chercher mais je suis sur la bonne voie.

Lien vers le commentaire
Partager sur d’autres sites

Finalement j'ai réussi à éxécuter mes requêtes.

Cependant un mystère plane toujours :

Pourquoi les requêtes addPortMapping et deletePortMapping sont dans la forme normale (unsigned short sous forme décimale, adresses ip dans le bon sens), et les réponses genre GetGenericPortMapping sont dans la forme invers (unsigned short en network byte order sous forme décimale [ex: 936 vaut 43011] et adresse ip inversée)? Y a-t-il une raison logique ou les concepteurs avaient trop fumé?

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...