我正在尝试使用以下URL从Web服务检索JSON文件。当我使用浏览器发送HTTP请求时,这很好。 对于Android应用程序,我想出了以下代码。
// Android request
String url = "http://data.wien.gv.at/daten/geoserver/ows?service=WFS" +
"&request=GetFeature&version=1.1.0&typeName=ogdwien:BAUMOGD" +
"&srsName=EPSG:4326&outputFormat=json" +
"&bbox=16.377681,48.211448,16.379829,48.21341,EPSG:4326" +
"&maxfeatures=10"
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity);
但是,EntityUtils
不输出JSON文件,而是输出此XML异常。
// Value of result
<?xml version="1.0" encoding="UTF-8"?>
<ows:ExceptionReport version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/ows http://data.wien.gv.at/daten/geoserver/schemas/ows/1.0.0/owsExceptionReport.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows">
<ows:Exception exceptionCode="NoApplicableCode">
<ows:ExceptionText>java.io.EOFException: input contained no data
input contained no data</ows:ExceptionText>
</ows:Exception>
</ows:ExceptionReport>
我希望你能看到错误的原因......
答案 0 :(得分:1)
HTML规范在技术上定义了“GET”和“POST”之间的区别,因此前者意味着表单数据将被(通过浏览器)编码为URL,而后者意味着表单数据将出现在邮件正文。 &GT; [source]
由于您将完整请求编码到网址中(request=GetFeature
等)=&gt;请改用HttpGet
。
甚至可以使用post工作imo,因为url仍然应该传输到服务器,但是服务器需要检测post请求实际上是get请求并且相应地表现。