diff --git a/owslib/feature/__init__.py b/owslib/feature/__init__.py index ae15f8d62..84793772c 100644 --- a/owslib/feature/__init__.py +++ b/owslib/feature/__init__.py @@ -11,8 +11,10 @@ try: from urllib import urlencode + import urlparse except ImportError: from urllib.parse import urlencode + import urllib.parse as urlparse import logging from owslib.util import log from owslib.feature.schema import get_schema @@ -121,7 +123,6 @@ def getGETGetFeatureRequest(self, typename=None, filter=None, bbox=None, feature storedQueryParams = storedQueryParams or {} base_url = next((m.get('url') for m in self.getOperationByName('GetFeature').methods if m.get('type').lower() == method.lower())) - base_url = base_url if base_url.endswith("?") else base_url+"?" request = {'service': 'WFS', 'version': self.version, 'request': 'GetFeature'} @@ -131,7 +132,7 @@ def getGETGetFeatureRequest(self, typename=None, filter=None, bbox=None, feature elif bbox: request['bbox'] = self.getBBOXKVP(bbox,typename) elif filter: - request['query'] = str(filter) + request['filter'] = str(filter) if typename: typename = [typename] if type(typename) == type("") else typename if int(self.version.split('.')[0]) >= 2: @@ -158,9 +159,12 @@ def getGETGetFeatureRequest(self, typename=None, filter=None, bbox=None, feature if outputFormat is not None: request["outputFormat"] = outputFormat - data = urlencode(request, doseq=True) - - return base_url+data + url_parts = list(urlparse.urlparse(base_url)) + query = dict(urlparse.parse_qsl(url_parts[4])) + query.update(request) + url_parts[4] = urlencode(query, doseq=True) + + return urlparse.urlunparse(url_parts) def get_schema(self, typename): @@ -170,4 +174,3 @@ def get_schema(self, typename): return get_schema(self.url, typename, self.version) - diff --git a/owslib/feature/wfs200.py b/owslib/feature/wfs200.py index e52bd558e..ed16ed5c6 100644 --- a/owslib/feature/wfs200.py +++ b/owslib/feature/wfs200.py @@ -29,6 +29,8 @@ except ImportError: from urllib.parse import urlencode +from urllib import unquote_plus + import logging from owslib.util import log @@ -228,7 +230,7 @@ def getfeature(self, typename=None, filter=None, bbox=None, featureid=None, # If method is 'Post', data will be None here - u = openURL(url, data, method, timeout=self.timeout, + u = openURL(unquote_plus(url), data, method, timeout=self.timeout, username=self.username, password=self.password) # check for service exceptions, rewrap, and return diff --git a/owslib/util.py b/owslib/util.py index b466d650e..2646395d8 100644 --- a/owslib/util.py +++ b/owslib/util.py @@ -135,7 +135,7 @@ def geturl(self): # @TODO: __getattribute__ for poking at response def openURL(url_base, data=None, method='Get', cookies=None, username=None, password=None, timeout=30, headers=None, - verify=True, cert=None): + verify=False, cert=None): """ Function to open URLs.