Je travaille sur le projet Open Network Video Interface Forum-Java et je suis les étapes décrites dans le Guide du programmeur d'application ONVIF .
J'ai généré des sources à partir du site wsdls
fourni sur ONVIF. Je peux récupérer l'URI du flux 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, alors l'erreur est:
Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 405: Method Not Allowed
Réponses:
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'informations d'identification pour utiliser la méthode.
Quant à
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.la source
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 recording.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 .
la source
HTTP 405 - La 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 est invalide signifie qu'elle ne contient aucune action.
la source