Je travaille sur le projet Open Network Video Interface Forum-Java et je suis les étapes décrites dans le ONVIF Application Programmer's Guide .
J'ai généré des sources à partir du wsdls
fourni sur le site ONVIF. Je suis en mesure de récupérer l'URI de diffusion en direct à l'aide du media.wsdl
. Maintenant, j'ai un problème avec l'enregistrement. Les codes que j'ai essayés sont donnés ci-dessous:
RecordingService recording_ervice = new RecordingService();
RecordingPort record_port = recording_ervice.getRecordingPort();
BindingProvider bindingProvider = (BindingProvider) record_port;
// Add a security handler for the credentials
final Binding binding = bindingProvider.getBinding();
List<Handler> handlerList = binding.getHandlerChain();
if (handlerList == null) {
handlerList = new ArrayList<Handler>();
}
handlerList.add(new RecordStream.SecurityHandler());
// binding.setHandlerChain(handlerList);
// Set the actual web services address instead of the mock service
Map<String, Object> requestContext = bindingProvider.getRequestContext();
requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://" + deviceip + "/onvif/media_service");
requestContext.put(BindingProvider.USERNAME_PROPERTY, user);
requestContext.put(BindingProvider.PASSWORD_PROPERTY, pass);
Recordings recordings = record_port.getRecordings();
Le code ci-dessus lors de l'exécution donne une erreur comme:
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized
J'ai également essayé avec le service multimédia, puis l'erreur est:
Exception in thread "main" com.Sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 405: Method Not Allowed
Lorsque vous avez essayé avec la source multimédia, vous avez apparemment demandé une action non autorisée car le serveur a renvoyé le code d'erreur 405. Soit la méthode est interdite d'utilisation, soit vous avez besoin d'un justificatif d'identité pour utiliser la méthode.
Pour ce qui est de Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method 'ns11:GetServiceCapabilities' not implemented: method name or namespace not recognized
, @Sigismondo a raison sur le fait que la plupart des caméras IP ne le prennent pas en charge. Vous aurez besoin d'une méthode d'enregistrement alternative (littérale et jeu de mots) pour enregistrer à partir d'une caméra IP.
Vous utilisez http://" + deviceip + "/onvif/media_service
pour accéder au service d'enregistrement, mais il s'agit d'un service media.wsdl . Ainsi, lorsque vous essayez d'appeler getRecordings sur le service multimédia, il semble normal que vous receviez une erreur.
L'URL du service registration.wsdl doit être http://" + deviceip + "/onvif/recording_service
.
Afin d'obtenir l'URL correcte pour atteindre le service d'enregistrement, vous devez la demander à la méthode GetCapabilities du service devicemgmt.wsdl .
HTTP 405 - Ressource non autorisée se produit généralement dans IIS. Ce problème se produit si les conditions suivantes sont remplies:
Vous ne spécifiez pas le nom du fichier. Par exemple, vous ne spécifiez pas http: // Server/Web/...
Le modèle d'objet de script (SOM) est activé.
Ainsi, lorsque le SOM est activé, une balise <form> est insérée dans la page, la balise n'est pas valide signifie qu'elle ne contient aucune action.