For others who come across this question, here's what I've learned so far:
PostGIS and the geography data type appear to be red herrings.
In WFS 1.0, you can't project on the fly and the BBOX is expected to be specified in the same projection as the features.
In WFS 1.1, reprojection is supported, but by default the BBOX is interpreted as CRS84. Unlike in WMS, there is no BBOXSR parameter, but you can append a "crsuri" string to the end of your BBOX parameter specifying the CRS of the BBOX. Unfortunately, you can't just say "EPSG:32615" but have to use a CRS URI like "urn:ogc:def:crs:OGC:1.3:CRS84". The crsuri must be a valid URI, and it appears codes like "EPSG:32615" are accepted, at least by GeoServer, though the blog I found recommends the urn format shown above. I haven't yet found the spec for these URI's, so I don't know whether they're application-specific or there's some universal way to say "WGS84, UTM 15". I'd love for someone more knowledgeable to weigh in on this.
Anyway, here is the blog post where I got most of my information.
Anyone know where to find a true API reference for WFS? All I can find are the implementation spec and the documentation for various WFS server applications.
I got this to work. Here is how:
1) Forget the proxy, add you url to the esri corsEnabledServers
like this:
esriConfig.defaults.io.corsEnabledServers.push([URL]:[PORT]);
notice that you need to include the port of it's non standard (cause geoserver usually uses 8080 that's not that of an unusual case)
2) For whatever reason, not sure if this is ESRI or geoserver using WFS version 1.0.0 works but using 1.1.0 does not. Both geoserver and the esri javascript API claim to support 1.1.0, so not sure what the deal is there.
That should make this work. That said I have to add a word of caution. The whole point of using a WFS instead of another solution like WMS or WCS is to access features, not tiles. ESRI's WFS layer doesn't inherit from ESRI's FeatureLayer so its functionality is very limited. I will be posting another question on using attribute based renderers, but I fear it may not be supported.
Best Answer
You can't read complex features from that WFS server with QGIS, at least not yet. However, you can use the new GDAL GMLAS driver http://gdal.org/drv_gmlas.html that is currently in GDAL trunk only.
Usage examples:
Get layer list:
Study structure of one layer:
Leave out the -so (summary only switch) and you can print data about the features on screen. You can even try to convert data into SpatiaLite database:
However, the result will have no features. I am not sure if my syntax is wrong or if the error message is right and layers in that service are not configured correctly:
As the next steps I would read carefully GDAL GMLAS document page, have a try with saving data from the service into GML with curl and simple GetFeature request, and try if data could be converted better from disk as
If there are still error messages about schema validation errors contact those who maintain the service.