У меня есть webservice, сделанный с PHP. Я отправляю параметр и получаю данные с сервера. Он отлично работает для небольшого объема данных.
У меня есть одна тестовая служба, которая возвращает 10 xml записей, которые хорошо работают. Тот же web-сервис со всеми 160 xml-данными не извлекает данные.
Я наклеил код ниже.. Есть ли какое-либо ограничение по объему данных или мне нужно передать какие-либо другие параметры?
public void LoadNews(String Url, List<NameValuePair> nvp) {
InputStream ins = null;
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(Url);
httppost.setHeader("Content-Type", "application/x-www-form-urlencoded");
try {
// Add your data
List<NameValuePair> nameValuePairs = nvp;
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
ins = response.getEntity().getContent();
BufferedInputStream bis = new BufferedInputStream(ins);
ByteArrayBuffer baf = new ByteArrayBuffer(1024);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}
String response = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ new String(baf.toByteArray());
} catch (ClientProtocolException e) {
Log.e(CommonFunctions.LOGTAG, "ClientProtocolException");
} catch (IOException e) {
Log.e(CommonFunctions.LOGTAG, "IOException");
}
Я тестировал тот же веб-сервис с Firefox + Poster Addon, который отлично работает с... XML дает CDATA в ответ.
Это не ответ, а рекомендация - используйте BasicResponseHandler
для извлечения содержимого HTTP. Это экономит всю поточную/буферическую бессмыслицу! (т.е. большая часть вашего предложения try
)
String response = httpclient.execute(httppost, new BasicResponseHandler());
Чтобы сделать это понятным:
public void LoadNews(String Url, List<NameValuePair> nvp) {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(Url);
httppost.setHeader("Content-Type", "application/x-www-form-urlencoded");
try {
// Add your data
List<NameValuePair> nameValuePairs = nvp;
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
String response = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
httpclient.execute(httppost, new BasicResponseHandler());
/* ... do stuff with response ... */
} catch (ClientProtocolException e) {
Log.e(CommonFunctions.LOGTAG, "ClientProtocolException");
} catch (IOException e) {
Log.e(CommonFunctions.LOGTAG, "IOException");
}
}
В качестве добавления вы должны не добавлять заголовок XML вручную - это должно быть возвращено в документе веб-службой, которую вы используете.