EntityUtils报告Android请求的NoApplicableCode异常

时间:2012-04-02 22:53:27

标签: android json exception httpclient http-post

我正在尝试使用以下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>

我希望你能看到错误的原因......

1 个答案:

答案 0 :(得分:1)

  

HTML规范在技术上定义了“GET”和“POST”之间的区别,因此前者意味着表单数据将被(通过浏览器)编码为URL,而后者意味着表单数据将出现在邮件正文。 &GT; [source]

由于您将完整请求编码到网址中(request=GetFeature等)=&gt;请改用HttpGet

甚至可以使用post工作imo,因为url仍然应该传输到服务器,但是服务器需要检测post请求实际上是get请求并且相应地表现。