EntityUtils сообщает об исключении NoApplicableCode для запроса Android - PullRequest
0 голосов
/ 03 апреля 2012

Я пытаюсь получить файл JSON из веб-службы, используя следующий URL .Это прекрасно работает, когда я использую браузер для отправки 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 Ответ

1 голос
/ 03 апреля 2012

Спецификации HTML технически определяют разницу между «GET» и «POST», так что первый означает, что данные формы должны быть закодированы (браузером) в URL, а последний означает, что данные формы должны отображаться внутри тело сообщения. > [ источник ]

Поскольку вы действительно кодируете полный запрос в URL (request=GetFeature и т. Д.) => Вместо этого используйте HttpGet.

Может даже работать imo с post, поскольку URL-адрес все равно должен передаваться на сервер, но серверу необходимо обнаружить, что post-запрос на самом деле является запросом get, и вести себя соответственно.

...