Question invoke-webrequest pas gentil....

Plus d'informations
il y a 10 ans 5 mois #20920 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: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... ???

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 5 mois #20921 par Philippe
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 !

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 5 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 B)

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 B) , 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 :woohoo: )
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 :dry:
...

je repars sur google :whistle:

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 5 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 :)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 4 mois #20927 par Philippe
c'est une bonne nouvelle :)

2) oui je fais bien la différence, enfin j'espère , je veux juste obtenir un fichier Json, et non en envoyer un...

regarde le lien que je t'ai donné
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.

Plus d'informations
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 ? :-)

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.060 secondes
Propulsé par Kunena