banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Wed 22 April 2015 08:56

viarn
Juste Inscrit !
Lieu: SAINT SYMPHORIEN D'OZON
Date d'inscription: 5 Dec 2008
Messages: 9

Openlayers XMLHttpRequest cannot load. Invalid HTTP status code 405

Bonjour à tous.
J'essais tant bien que mal d'extraire des données sur le serveur du BRGM. Extraction des données d'un forage existant.
N'ayant pas réussi avec WMSGetFeatureInfo, je suis passé par getFullRequestString qui semble marcher en apparence.

Après avoir construit ma requête comme suit ...

Code:

function interrogeBss(event) {
    layerlist = "BSS";
    url = Forages.getFullRequestString({
        REQUEST: "GetFeatureInfo",
        BBOX: map.getExtent().toBBOX(),
        X: event.xy.x,
        Y: event.xy.y,
        INFO_FORMAT: 'text/plain',
        //INFO_FORMAT: 'gml',
        QUERY_LAYERS: layerlist,
        FEATURE_COUNT: 1,
        WIDTH: map.size.w,
        HEIGHT: map.size.h},
        "http://geoservices.brgm.fr/geologie");    
    OpenLayers.loadURL(url, '', this, setHTML);
    Event.stop(event);
}

function setHTML(response) {
    alert(response.text);
}

Le serveur me répond...

OPTIONS http://geoservices.brgm.fr/geologie?PRO … HEIGHT=407 405 (Method Not Allowed)
cartesimple.html:1 XMLHttpRequest cannot load http://geoservices.brgm.fr/geologie?PRO … EIGHT=407. Invalid HTTP status code 405


Quand je debug ma requete j'obtiens ça...
http://geoservices.brgm.fr/geologie?PRO … HEIGHT=407

Ce qui est très énervant puisque ma requête me renvoie exactement les informations dont j'ai besoin.
J'ai essayé une autre fonction qui permet le Allow Cross Origin, mais je n'ai pas réussi à la mettre en oeuvre.  grrr !!

Adresse de la carte (click sur un point de la carte)
http://ozonforages.free.fr/cartesimple.html

Si qqun a des idées ou des suggestions je suis preneur. Merci

Hors ligne

 

#2 Wed 22 April 2015 13:47

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: Openlayers XMLHttpRequest cannot load. Invalid HTTP status code 405

Bonjour,

Si je comprend bien tu construis ta requête d'extraction en pure JavaScript et tu la compares à du code via OpenLayers?

La citation de ton code fait apparaitre plusieurs choses bizarre. Tout d'abord tu as un paramètre PROJECTION qui ne signifie rien dans le service WMS. Tu dois utiliser SRS ou CRS en fonction de la version WMS. Ensuite il te manque d'autres paramètres obligatoires dans ta requête :

SERVICE=WMS
VERSION=1.1.1
REQUEST=GetFeatureInfo
SRS=EPSG%3A3857
BBOX=542543.171523%2C5719261.52805%2C554773.096047%2C5723150.261864
X=587
Y=202


Certaines de ces paramètres ne figurent pas dans la requête qui plantent, tu devrais jeter un oeil déjà par là. Ensuite si tu rajoutes celles qui manquent cela devrait s'améliorer.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Wed 22 April 2015 15:20

viarn
Juste Inscrit !
Lieu: SAINT SYMPHORIEN D'OZON
Date d'inscription: 5 Dec 2008
Messages: 9

Re: Openlayers XMLHttpRequest cannot load. Invalid HTTP status code 405

Bonjour Yves et merci de m'avoir répondu.
J'ai effectivement remarqué qu'il y avait des paramètres que je n'avais pas passé et qui apparaissaient bizarrement dans la requête.
Après vérification, il s'avère que dans la construction de la requête, "Forages.getFullRequestString" récupère les paramètres que j'ai déclaré dans le chargement du WMS. d'où les paramètres projection, etc.

Code:

Forages = new OpenLayers.Layer.WMS(
        "Forages d'eau existant",
        "http://geoservices.brgm.fr/geologie",{
            projection: 'EPSG:3857',
            layers: 'BSS',
            transparent: "true",
            INFO_FORMAT: 'gml',
            format: "image/png",
            extractStyles: true, 
            extractAttributes: true,
            maxDepth: 2
        }
    )
    map.addLayer(Forages);

Je n'ai pas trouvé les fameux paramètres obligatoires, peut-être as-tu lien de documentation ?

je reste quand même dubitatif sur cette fameuse requête. Appelée par OpenLayers, il y a cette erreur 405 et si on la renseigne directement dans le navigateur, l'info est bien retournée.
http://geoservices.brgm.fr/geologie?LAY … &Y=178

j'ai commencé à étudier le problème du Allow Cross Origin Ressouce qui "me semble" être plus à l'origine du problème.
Avec la méthode GET j'obtiens le status 200 OK, plus de problème de ce côté là. Par contre je ne sais pas du tout où sont les données.

Flûte alors !  Rien n'est jamais simple....

Hors ligne

 

#4 Tue 05 May 2015 14:24

viarn
Juste Inscrit !
Lieu: SAINT SYMPHORIEN D'OZON
Date d'inscription: 5 Dec 2008
Messages: 9

Re: Openlayers XMLHttpRequest cannot load. Invalid HTTP status code 405

Bonjour à tous.
Bon j'ai étudié de près les requêtes XMLhttpRequest, et j'ai réussi enfin à les mettre en oeuvre. Mais quel ne fut pas mon désespoir quand je me suis rendu compte que j'avais installé en amont une extension à Chrome. Grrrr !!

https://chrome.google.com/webstore/deta … hlkkiljbi/

ce qui veut dire que si les clients veulent connaitre des informations sur mes cartes, ils sont obligés, soit d'installer le lien précédent, soit obligés de redemarrer chrome en tapant

Code:

chrome.exe --disable-web-security

dans démarrer>Executer.


Ce qui n'est pas viable du tout pour les utilisateurs. Idem pour la légende dynamique que se base sur une requête AJAX.

http://ozonforages.free.fr/cartes.html

Du coup je ne sais pas comment résoudre ce problème !

Si qqun a des pistes, merci de m'en faire profiter.

Vincent

Hors ligne

 

Pied de page des forums

Powered by FluxBB