Проблема получения с URL - PullRequest
0 голосов
/ 11 марта 2011

Здравствуйте. Я получаю файл JSON с URL-адреса устройства Android. Я понятия не имею, почему я получаю только первый символ JSON, это «{» вместо {"status":"OK","num_results":5,"results":[{"id":1,"title":"Apartamentos Campus", Тогда is.available () возвращает 1 все время. Самое смешное, что если я использую в другом устройстве, он получает все.

Я использую Wi-Fi для подключения.

И вывод, который я получаю:

03-11 13: 12: 17.377: VERBOSE / Mixare (15816): попытки: 1

03-11 13: 12: 17.382: VERBOSE / Mixare (15816): is.available (): 1

03-11 13: 12: 17.462: VERBOSE / Mixare (15816): попытки: 1

03-11 13: 12: 17.482: VERBOSE / Mixare (15816): is.available (): 1

03-11 13: 12: 19.417: VERBOSE / Mixare (15816): попытки: 2

03-11 13: 12: 19.417: VERBOSE / Mixare (15816): is.available (): 1 ...

А это код:

    public InputStream getHttpGETInputStream(String urlStr, int attemps) throws Exception {     
    URL u = new URL(urlStr);
    InputStream is = null;
    try{            
        URLConnection uc = u.openConnection();          
        is =  uc.getInputStream();          
    }
    catch(Exception e){
        Log.v(MixView.TAG, "Excepcion leyendo inputStream: "+e.getMessage());           
    }
    Log.v(MixView.TAG, "attemps: "+attemps);
    Log.v(MixView.TAG, "is.available(): "+is.available());
    if(is.available() < 50 && attemps < 6){
        try {               
            Thread.sleep(2000);//para y lo vuelve a intentar descargar              
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }           
        attemps++;      
        is.close();
        return getHttpGETInputStream(urlStr,attemps);
    }       
    return is;
}

1 Ответ

0 голосов
/ 11 марта 2011

Я полагаю, вы неправильно читаете контент.Пожалуйста, используйте следующий код:

public static final byte[] getBytes(URLConnection conn ) throws IOException {
                final InputStream inputStream = conn.getInputStream();      
                final ByteArrayOutputStream baos = new ByteArrayOutputStream();         
                final byte[] b = new byte[256];
                int rv = 0;
                while ( ( rv = inputStream.read(b) ) != -1 ) baos.write(b, 0, rv);
                try  { inputStream.close(); } catch ( Exception e ) {};
            try  {
                final HttpURLConnection httpConn = (HttpURLConnection)conn;                     
                        httpConn.disconnect();
            }
            catch ( Exception e ) {};       
            final byte[] bytes =  baos.toByteArray();
            baos.close();
            return bytes;
        }

        public static final String getResponse(URLConnection conn) throws IOException {
                final byte[] bytes = getBytes(conn);
            final String response = new String(bytes,"UTF-8");
            return response;
        }      

...
final JSONObject responseObj = new JSONObject(getResponse(your_url_connection));
...
...