Получение ответа веб-служб rest с использованием Java для Android

#java #android #eclipse

#java #Android #eclipse

Вопрос:

следующий код, который я создал, следуя руководству по веб-сервисам, но ничего не происходит, хотя ошибка не выдается. Кто-нибудь может мне помочь, пожалуйста? поскольку я не могу продолжить. Мне нужно подключиться к веб-службе, и это не работает.

Используя отладчик, я обнаружил, что он останавливается в первом методе в этой конкретной строке: HttpResponse response = client.execute(запрос);

 private String result = "";

 public void getResponse()
    {
        HttpClient client = new DefaultHttpClient();    
        String query ="working url";

        try
        {
            URL url = new URL(query);
            URI uri = new URI(url.getProtocol(), url.getHost(),url.getPath(), url.getQuery(),null);
            HttpGet request = new HttpGet(uri);
            HttpResponse response = client.execute(request);
            result=Userrequest(response); 

        }
        catch(Exception ex)
        {

        }




    }
    public String Userrequest(HttpResponse response)
    {
        try     
        {
            InputStream in = response.getEntity().getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            StringBuilder str = new StringBuilder();
            String line = null;
            while((line = reader.readLine()) != null)
                    {
                        str.append(line   "n");
                    }
            in.close();
            result = str.toString();
            updateData(result);         
        }
        catch(Exception ex)
        {
            //responsetxt.setText(ex.getMessage());
        }
        return resu<
    }
    public void updateData(String result)
    {
        try     
        {
            JSONObject json = new JSONObject(result);
            JSONArray ja;
            json = json.getJSONObject("responseData");
            ja = json.getJSONArray("results");

            int resultCount = ja.length();

            for (int i =0; i<resultCount; i  )
            {
                JSONObject resultObject = ja.getJSONObject(i);
                result = resultObject.toString();

            }

        }
        catch(Exception ex)
        {
            //responsetxt.setText(ex.getMessage());
        }
    }
  

Комментарии:

1. Добавили ли вы разрешение на доступ в Интернет в AndroidManifest.xml ? Можете ли вы опубликовать свой LogCat?

2. Большое вам спасибо за ваш ответ. Нет, я ничего не добавлял в свой манифест. Любая помощь будет высоко оценена.

3. String result = EntityUtils.toString(response); упрощает то, что вы написали (чтение данных из буфера ответов и создание строки).

Ответ №1:

Добавьте строку

 <uses-permission android:name="android.permission.INTERNET"></uses-permission>
  

В вашем AndroidManifest.xml , после строки

 <uses-sdk android:minSdkVersion="#" />
  

Где # вы представляете minSdkVersion

РЕДАКТИРОВАТЬ: попробуйте изменить это:

         URL url = new URL(query);
        URI uri = new URI(url.getProtocol(), url.getHost(),url.getPath(), url.getQuery(),null);
        HttpGet request = new HttpGet(uri);
  

с помощью этого:

         URI uri = new URI(query);
        HttpGet request = new HttpGet();
        request.setUri(uri);
  

Комментарии:

1. Я добавил это, но все равно ничего не происходит. 🙁 <использует-sdk android:minSdkVersion=»14″ /> ИНТЕРНЕТ»/>

2. В журнале ошибок у меня есть необработанное исключение цикла событий, ошибка Ср. 02 ноября 09:59:14 CET 2011 Необработанное исключение цикла событий org.eclipse.swt.SWTException: не удалось выполнить runnable (java.lang. Исключение NullPointerException) в org.eclipse.swt.SWT.error(SWT.java: 4282) в org.eclipse.swt.SWT.error(SWT.java: 4197) в org.eclipse.swt.widgets. Synchronizer.runAsyncMessages(Synchronizer.java: 138) в org.eclipse.swt.widgets. Display.runAsyncMessages(Display.java:4140) в org.eclipse.swt.widgets. Display.readAndDispatch(Display.java:3757) в org.eclipse.ui.internal. Workbench.runEventLoop(Workbenc …..

3. Используя отладчик, я обнаружил, что он останавливается в первом методе в этой конкретной строке: HttpResponse response = client.execute(запрос);

4. Смотрите Часть РЕДАКТИРОВАНИЯ в моем ответе