HTTP POST + ANDROID Не получает ответ!

1

У меня есть 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 в ответ.

  • 0
    Можете ли вы предоставить более подробную информацию? Под «не извлечением данных» вы подразумеваете, что ваш веб-сервис не возвращает все данные, для которых он предназначен? В противном случае, вы можете предоставить какой-нибудь вывод Logcat?
  • 0
    Привет, Дэйв, HttpResponse response = httpclient.execute (httppost); в этом я ничего не получаю в ответ. Когда я проверяю ответ, я получаю код состояния 200 / OK ... Это означает, что есть некоторый ответ, но я ничего не получаю в ins = response.getEntity (). GetContent ();
Показать ещё 3 комментария
Теги:
post

1 ответ

0
Лучший ответ

Это не ответ, а рекомендация - используйте 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 вручную - это должно быть возвращено в документе веб-службой, которую вы используете.

  • 0
    не могли бы вы рассказать подробнее? или любой связанный пример?
  • 0
    Я также использовал это .. но получение response1 = "<? Xml version = \" 1.0 \ "encoding = \" UTF-8 \ "?>" Означает отсутствие ответа от веб-службы
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню