Question
invoke-webrequest pas gentil....
- acidric
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 13
- Remerciements reçus 0
il y a 10 ans 5 mois #20920
par acidric
invoke-webrequest pas gentil.... a été créé par acidric
bonjour,
Je cherche à utiliser l'api REST d'une appli de gestion wifi (UNIFI)
je dispose principalement de ca comme 'aide'
dl.ubnt.com/unifi/4.7.5/unifi_sh_api
donc en gros, si je comprends bien (car je débute également avec REST) je dois convertir la commande curl qui m'intéresse, en commande invoke-restmethod
La commande qui m'intéresse, est la suivante:
# stat/sta
unifi_list_sta() {
${curl_cmd} --data \"json={}\" $baseurl/api/s/$site/stat/sta
}
j'ai donc essayé, plein, plein de chose, et mon meilleur résultat (qui me renvoie aucune erreur, mais qui ne marche pas
:P ca serait trop beau)
c'est ca:
[code:1]
$baseuri = 'http://192.168.1.11:8443'
$username=\"admin\"
$password=\"pass\"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes((\"{0}:{1}\" -f $username,$password)))
Invoke-RestMethod -Uri \"$baseuri/api/s/default/stat/sta/\" -method get -Headers @{Authorization=(\"Basic {0}\" -f $base64AuthInfo)} -debug -verbose
[/code:1]
Ca me renvoie une chaine de caractère bizarre \"§♥♥ ☻☻\" et, même si je change le password, ca change rien (donc c'est sur je fais fausse route...)
C'est du https, avec un certificat autosigné, c'est pour ca que j'ai rajouté ca aussi:
[code:1]
add-type @\"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class IDontCarePolicy : ICertificatePolicy {
public IDontCarePolicy() {}
public bool CheckValidationResult(
ServicePoint sPoint, X509Certificate cert,
WebRequest wRequest, int certProb) {
return true;
}
}
\"@
[System.Net.ServicePointManager]::CertificatePolicy = new-object IDontCarePolicy
[/code:1]
Ca devrait me renvoyer un long gichier Json normalement...
Pour essayer de mieux comprendre le mechanism, j'ai essayé d'utiliser l'outi 'advanced rest client' dans chrome, mais je n'y arrive pas non plus...
bref, je suis très loin de la ligne d'arrivée, mais surtout je n'ai plus aucune idée d'ou vient le problème...
si quelqu'un à une idée... ???
Je cherche à utiliser l'api REST d'une appli de gestion wifi (UNIFI)
je dispose principalement de ca comme 'aide'
dl.ubnt.com/unifi/4.7.5/unifi_sh_api
donc en gros, si je comprends bien (car je débute également avec REST) je dois convertir la commande curl qui m'intéresse, en commande invoke-restmethod
La commande qui m'intéresse, est la suivante:
# stat/sta
unifi_list_sta() {
${curl_cmd} --data \"json={}\" $baseurl/api/s/$site/stat/sta
}
j'ai donc essayé, plein, plein de chose, et mon meilleur résultat (qui me renvoie aucune erreur, mais qui ne marche pas
c'est ca:
[code:1]
$baseuri = 'http://192.168.1.11:8443'
$username=\"admin\"
$password=\"pass\"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes((\"{0}:{1}\" -f $username,$password)))
Invoke-RestMethod -Uri \"$baseuri/api/s/default/stat/sta/\" -method get -Headers @{Authorization=(\"Basic {0}\" -f $base64AuthInfo)} -debug -verbose
[/code:1]
Ca me renvoie une chaine de caractère bizarre \"§♥♥ ☻☻\" et, même si je change le password, ca change rien (donc c'est sur je fais fausse route...)
C'est du https, avec un certificat autosigné, c'est pour ca que j'ai rajouté ca aussi:
[code:1]
add-type @\"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class IDontCarePolicy : ICertificatePolicy {
public IDontCarePolicy() {}
public bool CheckValidationResult(
ServicePoint sPoint, X509Certificate cert,
WebRequest wRequest, int certProb) {
return true;
}
}
\"@
[System.Net.ServicePointManager]::CertificatePolicy = new-object IDontCarePolicy
[/code:1]
Ca devrait me renvoyer un long gichier Json normalement...
Pour essayer de mieux comprendre le mechanism, j'ai essayé d'utiliser l'outi 'advanced rest client' dans chrome, mais je n'y arrive pas non plus...
bref, je suis très loin de la ligne d'arrivée, mais surtout je n'ai plus aucune idée d'ou vient le problème...
si quelqu'un à une idée... ???
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 10 ans 4 mois #20921
par Philippe
Réponse de Philippe sur le sujet Re:invoke-webrequest pas gentil....
salut acidric
je ne peut pas t'aidé, je n'est jamais utilisé cette cmdlet !
mais je suppose que :
1) ton serveur https fonctionne et répond normalement
2) tu différencie les methode get et post
3) tu a lu exemple 2 de la doc de invoke-restmethod il y a en autre la commande suivante pour l'utilisation de certificat autosigné :
[code:1]# Next, allow the use of self-signed SSL certificates.
[System.Net.ServicePointManager]::«»ServerCertificateValidationCallback = { $true }[/code:1]
4) tu a des exemples ici sans pouvoir te dire si ça va t'aidé !
bon courage pour la suite
avec un peu de chance il y aura peut être quelqu'un qui a les connaisances ici !
je ne peut pas t'aidé, je n'est jamais utilisé cette cmdlet !
mais je suppose que :
1) ton serveur https fonctionne et répond normalement
2) tu différencie les methode get et post
3) tu a lu exemple 2 de la doc de invoke-restmethod il y a en autre la commande suivante pour l'utilisation de certificat autosigné :
[code:1]# Next, allow the use of self-signed SSL certificates.
[System.Net.ServicePointManager]::«»ServerCertificateValidationCallback = { $true }[/code:1]
4) tu a des exemples ici sans pouvoir te dire si ça va t'aidé !
bon courage pour la suite
avec un peu de chance il y aura peut être quelqu'un qui a les connaisances ici !
Connexion ou Créer un compte pour participer à la conversation.
- acidric
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 13
- Remerciements reçus 0
il y a 10 ans 4 mois #20922
par acidric
Réponse de acidric sur le sujet Re:invoke-webrequest pas gentil....
bonsoir 6ratgus,
et merci pour ta réponse rapide
pour te répondre
1) le serveur fonctionne et remplis son role, l'interface web fonctionne également, mais je n'ai jamais utilisé l'api REST.
Pour cela j'ai essayé d'utiliser'advanced rest clien' mais sans succès, est-ce parceque je ne me sers mal de l'outil (probable) ou parceque l'api ne fonctionne pas... je penche pour la première solution, mais qui sait...
2) oui je fais bien la différence, enfin j'espère
, je veux juste obtenir un fichier Json, et non en envoyer un...
3) oui, oui, la première fois que j'ai utilisé invoke-restmethod pour une autre api, j'avais eu ce problème qui m'avait bien fait galéré, et j'ai essayé les deux dans le cas présent (mon code et ta ligne de commande, même les deux l'un derrière l'autre, au cas ou
)
avec et sans le résultat est différent, donc je pense que le problème ne vient pas de la... plutot de l'authentification je dirais... visiblement il y a plusieurs moyen de s'identifier, et je ne sais pas le quel je dois utiliser... j'ai essayé les deux que j'ai vu... mais sans succès...
4)Merci pour les exemples, mais malheureusement j'en ai déja vu un paquet...
Je cherche surtout un moyen de troublshooter, ou de tester autrement....
soit arriver à utiliser un outil 'advanced rest client' par exemple, soit monter une machine linux pour tester les commandes d'origine
...
je repars sur google
et merci pour ta réponse rapide
pour te répondre
1) le serveur fonctionne et remplis son role, l'interface web fonctionne également, mais je n'ai jamais utilisé l'api REST.
Pour cela j'ai essayé d'utiliser'advanced rest clien' mais sans succès, est-ce parceque je ne me sers mal de l'outil (probable) ou parceque l'api ne fonctionne pas... je penche pour la première solution, mais qui sait...
2) oui je fais bien la différence, enfin j'espère
3) oui, oui, la première fois que j'ai utilisé invoke-restmethod pour une autre api, j'avais eu ce problème qui m'avait bien fait galéré, et j'ai essayé les deux dans le cas présent (mon code et ta ligne de commande, même les deux l'un derrière l'autre, au cas ou
avec et sans le résultat est différent, donc je pense que le problème ne vient pas de la... plutot de l'authentification je dirais... visiblement il y a plusieurs moyen de s'identifier, et je ne sais pas le quel je dois utiliser... j'ai essayé les deux que j'ai vu... mais sans succès...
4)Merci pour les exemples, mais malheureusement j'en ai déja vu un paquet...
Je cherche surtout un moyen de troublshooter, ou de tester autrement....
soit arriver à utiliser un outil 'advanced rest client' par exemple, soit monter une machine linux pour tester les commandes d'origine
...
je repars sur google
Connexion ou Créer un compte pour participer à la conversation.
- acidric
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 13
- Remerciements reçus 0
il y a 10 ans 4 mois #20923
par acidric
Réponse de acidric sur le sujet Re:invoke-webrequest pas gentil....
j'avance...
je viens de réussir à faire fonctionner l'API via 'advanced rest client' mais pour cela, je suis obligé de saisir le login mot de passe sur la page web, et après j'y arrive...
fiddler web debugger m'a bien aidé....
Donc, maintenant, je suis sur que j'ai un problème d'authentification.... mais lequel....
si il y a un spécialiste dans la salle
je viens de réussir à faire fonctionner l'API via 'advanced rest client' mais pour cela, je suis obligé de saisir le login mot de passe sur la page web, et après j'y arrive...
fiddler web debugger m'a bien aidé....
Donc, maintenant, je suis sur que j'ai un problème d'authentification.... mais lequel....
si il y a un spécialiste dans la salle
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 10 ans 4 mois #20927
par Philippe
Réponse de Philippe sur le sujet Re:invoke-webrequest pas gentil....
c'est une bonne nouvelle 
get et post envoie des paramètres à la page web, l'un sur url, l'autre dans le \"script\" !
donc tous dépend du serveur que tu interroge,
la page web que tu interroge ne doit pas être le formulaire (login/password) mais la page exécuté quand tu valide ton login et mot de passe !
ça pourrais correspondre à ton problème de saisie du login sur la page web
voila je t'ai donné tous mon savoir la dessus
peut être une autre personne ici ou sur un autre forum connais la réponse !
regarde le lien que je t'ai donné2) oui je fais bien la différence, enfin j'espère , je veux juste obtenir un fichier Json, et non en envoyer un...
get et post envoie des paramètres à la page web, l'un sur url, l'autre dans le \"script\" !
donc tous dépend du serveur que tu interroge,
la page web que tu interroge ne doit pas être le formulaire (login/password) mais la page exécuté quand tu valide ton login et mot de passe !
ça pourrais correspondre à ton problème de saisie du login sur la page web
voila je t'ai donné tous mon savoir la dessus
peut être une autre personne ici ou sur un autre forum connais la réponse !
Connexion ou Créer un compte pour participer à la conversation.
- acidric
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 13
- Remerciements reçus 0
il y a 10 ans 4 mois #20939
par acidric
Réponse de acidric sur le sujet Re:invoke-webrequest pas gentil....
oui j'ai bien vu les différences, mais malgré mes nombreux test, rien de nouveau...
Avec l'outil advanced rest client, j'arrive à récupérer le fichier json sur la page //ip:8443/api/s/default/stat/sta mais uniquement si je me logue sur la page web //ip:8443/login dans un autre navigateur avant....
donc l'authentification basic que je passe via l'url adanced rest client ne passe pas...
Ne s'agirait il pas d'un cookie ? (le problème c'est que je ne maîtrise pas vraiment la communication web
)
j'ai épluché un paquet d'exemple, et pour le moment je tourne en rond, vu que je n'ai pas de message d'erreur...
un développeur web dans la salle ?
Avec l'outil advanced rest client, j'arrive à récupérer le fichier json sur la page //ip:8443/api/s/default/stat/sta mais uniquement si je me logue sur la page web //ip:8443/login dans un autre navigateur avant....
donc l'authentification basic que je passe via l'url adanced rest client ne passe pas...
Ne s'agirait il pas d'un cookie ? (le problème c'est que je ne maîtrise pas vraiment la communication web
j'ai épluché un paquet d'exemple, et pour le moment je tourne en rond, vu que je n'ai pas de message d'erreur...
un développeur web dans la salle ?
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.102 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- invoke-webrequest pas gentil....