невозможно получить все данные из httpResponse - PullRequest
0 голосов
/ 05 января 2011

После того, как я попробую другой способ, я не могу получить все данные из HttpResponse.

Вот мой код:

private static final DefaultHttpClient httpClient =
    new DefaultHttpClient();

public void get() throws Exception {
    HttpPost httpPost = new HttpPost("https://dt.abc.net/abc.exe");

    httpPost.addHeader("Accept", "text/xml");
    httpPost.setHeader("Content-Type","application/xml;charset=UTF-8")

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("XML", 
            getRequestTypeStringBuilder()));

    // In here "XML" is parameter value that is required send to the server 
    // before request data from server.

    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

    HttpParams params = new BasicHttpParams();
    HttpConnectionParams.setStaleCheckingEnabled(params, false);
    HttpConnectionParams.setConnectionTimeout(params, 5000);
    HttpConnectionParams.setSoTimeout(params, 5000);
    httpClient.setParams(params);
    httpClient.getParams().setParameter(
            ClientPNames.COOKIE_POLICY, CookiePolicy.RFC_2109);
    HttpResponse response = httpClient.execute(httpPost);

    InputStream is = response.getEntity().getContent();

    ByteArrayOutputStream os = new ByteArrayOutputStream();
    byte[] buf;
    int ByteRead;
    buf = new byte[1024];

    String xmldata = null;
    while ((ByteRead = is.read(buf, 0, buf.length)) != -1) {
        os.write(buf, 0, ByteRead);
        totalSize += ByteRead;                      
    }

    xmldata =  os.toString().replaceAll(" ", "");
    os.close();
    is.close();
}

Проблема в том, что если я установлю контент-type = "application / xml" и попробуйте получить данные с удаленного сервера, который в большом количестве не может получить все данные.Однако, если данные относительно малы, то они отлично работают.

Все возвращаемые данные в формате XML

Другая проблема, если я изменяю content-type = "application / x-www-form-urlencoded ", это бросает и исключение:

01-05 18:59:53.165: WARN/System.err(372): javax.net.ssl.SSLProtocolException: Read error: ssl=0x2f9698: Failure in SSL library, usually a protocol error
01-05 18:59:53.195: WARN/System.err(372):     at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_read(Native Method)
01-05 18:59:53.208: WARN/System.err(372):     at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:786)
01-05 18:59:53.215: WARN/System.err(372):     at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103)
01-05 18:59:53.236: WARN/System.err(372):     at org.apache.http.impl.io.AbstractSessionInputBuffer.read(AbstractSessionInputBuffer.java:134)
01-05 18:59:53.236: WARN/System.err(372):     at org.apache.http.impl.io.IdentityInputStream.read(IdentityInputStream.java:86)
01-05 18:59:53.246: WARN/System.err(372):     at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:159)
01-05 18:59:53.286: WARN/System.err(372):     at com.epsilon.android.dreammailandroid.remoteserver.AsyncDownloadDataInsert.doInBackground(AsyncDownloadDataInsert.java:111)
01-05 18:59:53.295: WARN/System.err(372):     at com.epsilon.android.dreammailandroid.remoteserver.AsyncDownloadDataInsert.doInBackground(AsyncDownloadDataInsert.java:1)
01-05 18:59:53.316: WARN/System.err(372):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
01-05 18:59:53.316: WARN/System.err(372):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
01-05 18:59:53.335: WARN/System.err(372):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
01-05 18:59:53.335: WARN/System.err(372):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
01-05 18:59:53.346: WARN/System.err(372):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
01-05 18:59:53.396: WARN/System.err(372):     at java.lang.Thread.run(Thread.java:1019)
01-05 18:59:55.764: WARN/InputManagerService(61): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@4065a640

Я не мог понять, почему я не мог получить все данные в ответ.

Не могли бы вы мне помочь, выясните, в чем проблема в моем коде.

Примечание: я получаю данные из приложения Android.

Спасибо,

«Пусть все будут счастливы»

С уважением и Метта, Ичироханг Лимбу

Ответы [ 3 ]

0 голосов
/ 05 декабря 2012

Ошибка указывает на уровень SSL или проблему с сетью. Любая из этих проблем возникает в слое ниже ошибки протокола Http, и я подозреваю, что приведенный выше совет по типу соединения может быть неуместным.

javax.net.ssl.SSLProtocolException: ошибка чтения: ssl = 0x2f9698: сбой в библиотеке SSL, обычно ошибка протокола 01-05 18: 59: 53.195: WARN / System.err (372): в org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_read (собственный метод) 01-05 18: 59: 53.208: WARN / System.err (372): atg.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl $ SSLInputStream.read (OpenSSLSocketImpl.java:786)

0 голосов
/ 28 мая 2014

Попытка проверить, не истекло ли время ожидания

0 голосов
/ 05 января 2011

Если возвращаются данные text / xml, вы можете попробовать:

HttpResponse response = httpClient.execute(httpPost);
String content = EntityUtils.toString(response.getEntity());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...