Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить XML с сервиса 
V
    Опции темы
Miller_time
Дата 4.9.2012, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 8.9.2006
Где: Нижний Новгород

Репутация: нет
Всего: 1



Добрый день уважаемые форумчане, сразу прошу не ругатся только начал изучать написание под андроид и столкнулся с проблемой, необходимо получь XML с сайта(сервиса) xml точно генерируется но не получается ее обработать

Код

public String getXmlFromUrl(String url) {
        String xml = null;

        try {
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            xml = EntityUtils.toString(httpEntity);

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return xml;
    }


Eclipse ругается вот в этом месте 

Код

            HttpResponse httpResponse = httpClient.execute(httpPost);


пишет о невозможности приобразования, хотя в спецификации вроде допускается и в примерах в сети имеется такие варианты, пожайлуста подскажите что не так ?


--------------------
Мы делаем игрыЗДЕСЬ
PM MAIL WWW ICQ   Вверх
javastic
Дата 4.9.2012, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 2
Всего: 27



Ошибку в студию!


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Miller_time
Дата 4.9.2012, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 8.9.2006
Где: Нижний Новгород

Репутация: нет
Всего: 1



Программа крошится вот такими логами:

Код

09-04 14:00:40.324: E/AndroidRuntime(553): FATAL EXCEPTION: main
09-04 14:00:40.324: E/AndroidRuntime(553): java.lang.IllegalStateException: Could not execute method of the activity
09-04 14:00:40.324: E/AndroidRuntime(553):    at android.view.View$1.onClick(View.java:3044)
09-04 14:00:40.324: E/AndroidRuntime(553):    at android.view.View.performClick(View.java:3511)
09-04 14:00:40.324: E/AndroidRuntime(553):    at android.view.View$PerformClick.run(View.java:14105)
09-04 14:00:40.324: E/AndroidRuntime(553):    at android.os.Handler.handleCallback(Handler.java:605)
09-04 14:00:40.324: E/AndroidRuntime(553):    at android.os.Handler.dispatchMessage(Handler.java:92)
09-04 14:00:40.324: E/AndroidRuntime(553):    at android.os.Looper.loop(Looper.java:137)
09-04 14:00:40.324: E/AndroidRuntime(553):    at android.app.ActivityThread.main(ActivityThread.java:4424)
09-04 14:00:40.324: E/AndroidRuntime(553):    at java.lang.reflect.Method.invokeNative(Native Method)
09-04 14:00:40.324: E/AndroidRuntime(553):    at java.lang.reflect.Method.invoke(Method.java:511)
09-04 14:00:40.324: E/AndroidRuntime(553):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-04 14:00:40.324: E/AndroidRuntime(553):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-04 14:00:40.324: E/AndroidRuntime(553):    at dalvik.system.NativeStart.main(Native Method)
09-04 14:00:40.324: E/AndroidRuntime(553): Caused by: java.lang.reflect.InvocationTargetException
09-04 14:00:40.324: E/AndroidRuntime(553):    at java.lang.reflect.Method.invokeNative(Native Method)
09-04 14:00:40.324: E/AndroidRuntime(553):    at java.lang.reflect.Method.invoke(Method.java:511)
09-04 14:00:40.324: E/AndroidRuntime(553):    at android.view.View$1.onClick(View.java:3039)
09-04 14:00:40.324: E/AndroidRuntime(553):    ... 11 more
09-04 14:00:40.324: E/AndroidRuntime(553): Caused by: android.os.NetworkOnMainThreadException
09-04 14:00:40.324: E/AndroidRuntime(553):    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
09-04 14:00:40.324: E/AndroidRuntime(553):    at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
09-04 14:00:40.324: E/AndroidRuntime(553):    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
09-04 14:00:40.324: E/AndroidRuntime(553):    at java.net.InetAddress.getAllByName(InetAddress.java:220)
09-04 14:00:40.324: E/AndroidRuntime(553):    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
09-04 14:00:40.324: E/AndroidRuntime(553):    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
09-04 14:00:40.324: E/AndroidRuntime(553):    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
09-04 14:00:40.324: E/AndroidRuntime(553):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
09-04 14:00:40.324: E/AndroidRuntime(553):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
09-04 14:00:40.324: E/AndroidRuntime(553):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
09-04 14:00:40.324: E/AndroidRuntime(553):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
09-04 14:00:40.324: E/AndroidRuntime(553):    at com.example.nn.MainActivity.getXmlFromUrl(MainActivity.java:43)
09-04 14:00:40.324: E/AndroidRuntime(553):    at com.example.nn.MainActivity.LoadData(MainActivity.java:34)
09-04 14:00:40.324: E/AndroidRuntime(553):    ... 14 more



--------------------
Мы делаем игрыЗДЕСЬ
PM MAIL WWW ICQ   Вверх
Dapo
Дата 4.9.2012, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: 1
Всего: 1



Caused by: android.os.NetworkOnMainThreadException   - нельзя работать с сеткой в основном потоке
Делай это в AsyncTask (имхо именно твой случай) или создавай свой поток.

Это сообщение отредактировал(а) Dapo - 4.9.2012, 17:36
PM MAIL   Вверх
javastic
Дата 5.9.2012, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 2
Всего: 27



Да, лучше делай как Дапо говорит.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Miller_time
Дата 6.9.2012, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 8.9.2006
Где: Нижний Новгород

Репутация: нет
Всего: 1



Вроде засунул в отдельный поток и все бы хорошо но опять ошибка 

Код

    private EditText et;
    public void LoadData(View view) throws Exception
    {
     et.append(" start 0 ");
     Thread myThread = new Thread( // создаём новый поток
             new Runnable() { // описываем объект Runnable в конструкторе
                 public void run() {
                  et.append(" start");
                  et.setText(getXmlFromUrl("http://ya.ru"));
                  et.append(" finsih");
                 }
                 
                 public String getXmlFromUrl(String url) {
                     String xml = null;

                     try {
                         DefaultHttpClient httpClient = new DefaultHttpClient();
                         HttpPost httpPost = new HttpPost(url);
                         HttpResponse httpResponse = httpClient.execute(httpPost);
                         HttpEntity httpEntity = httpResponse.getEntity();
                         xml = EntityUtils.toString(httpEntity);

                     } catch (UnsupportedEncodingException e) {
                         e.printStackTrace();
                     } catch (ClientProtocolException e) {
                         e.printStackTrace();
                     } catch (IOException e) {
                         e.printStackTrace();
                     }
                     return xml;
                 }
             }
         );
     myThread.start();
    }



Код

09-06 05:15:01.190: D/dalvikvm(527): Not late-enabling CheckJNI (already on)
09-06 05:15:01.940: I/dalvikvm(527): threadid=3: reacting to signal 3
09-06 05:15:02.000: I/dalvikvm(527): Wrote stack traces to '/data/anr/traces.txt'
09-06 05:15:02.440: I/dalvikvm(527): threadid=3: reacting to signal 3
09-06 05:15:02.450: I/dalvikvm(527): Wrote stack traces to '/data/anr/traces.txt'
09-06 05:15:02.540: D/gralloc_goldfish(527): Emulator without GPU emulation detected.
09-06 05:15:51.650: W/IInputConnectionWrapper(527): showStatusIcon on inactive InputConnection
09-06 05:17:03.800: I/dalvikvm(622): threadid=3: reacting to signal 3
09-06 05:17:03.810: I/dalvikvm(622): Wrote stack traces to '/data/anr/traces.txt'
09-06 05:17:04.200: D/gralloc_goldfish(622): Emulator without GPU emulation detected.
09-06 05:17:06.430: W/dalvikvm(622): threadid=11: thread exiting with uncaught exception (group=0x409c01f8)
[color=red]09-06 05:17:06.480: E/AndroidRuntime(622): FATAL EXCEPTION: Thread-78[/color]
09-06 05:17:06.480: E/AndroidRuntime(622): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4039)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:709)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.view.View.requestLayout(View.java:12675)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.view.View.requestLayout(View.java:12675)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.view.View.requestLayout(View.java:12675)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.view.View.requestLayout(View.java:12675)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:268)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.view.View.requestLayout(View.java:12675)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.widget.TextView.checkForResize(TextView.java:6716)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.widget.TextView.updateAfterEdit(TextView.java:6043)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.widget.TextView.handleTextChanged(TextView.java:7667)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:8044)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:892)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:266)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:443)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.text.SpannableStringBuilder.append(SpannableStringBuilder.java:257)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.text.SpannableStringBuilder.append(SpannableStringBuilder.java:29)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.widget.TextView.append(TextView.java:2825)
09-06 05:17:06.480: E/AndroidRuntime(622):    at android.widget.TextView.append(TextView.java:2812)
09-06 05:17:06.480: E/AndroidRuntime(622):    at com.example.nn.MainActivity$1.run(MainActivity.java:52)
09-06 05:17:06.480: E/AndroidRuntime(622):    at java.lang.Thread.run(Thread.java:856)
09-06 05:17:06.830: W/IInputConnectionWrapper(622): showStatusIcon on inactive InputConnection
09-06 05:17:08.992: I/Process(622): Sending signal. PID: 622 SIG: 9



--------------------
Мы делаем игрыЗДЕСЬ
PM MAIL WWW ICQ   Вверх
math64
Дата 6.9.2012, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 1
Всего: 72



Так ведь предлагали сделать не отдельный поток, а таск.
PM   Вверх
Miller_time
Дата 6.9.2012, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 8.9.2006
Где: Нижний Новгород

Репутация: нет
Всего: 1



Через таск , тоже возникает ошибка ((9





Код



public class MainActivity extends Activity {

    protected static final String TAG = null;
    private EditText et;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et = (EditText) findViewById(R.id.editText1);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    
    
   
    public void LoadData(View view) throws Exception
    {
     et.append(" start 0 ");   
     new DownloadFilesTask().execute(new URL("http://ya.ru"));
    }
    
    
}

class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
    private static final String TAG = null;

    protected Long doInBackground(URL... urls) {

     String xml = null;

        try {
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost();
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            xml = EntityUtils.toString(httpEntity);

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Log.d(TAG, xml);
        
        return (long) 123;
    }

    protected void onProgressUpdate(Integer... progress) {

    }

    protected void onPostExecute(Long result) {

    }
}



Код

09-06 06:22:38.099: I/dalvikvm(876): threadid=3: reacting to signal 3
09-06 06:22:38.229: I/dalvikvm(876): Wrote stack traces to '/data/anr/traces.txt'
09-06 06:22:38.468: I/dalvikvm(876): threadid=3: reacting to signal 3
09-06 06:22:38.559: I/dalvikvm(876): Wrote stack traces to '/data/anr/traces.txt'
09-06 06:22:38.579: D/gralloc_goldfish(876): Emulator without GPU emulation detected.
09-06 06:23:00.989: W/dalvikvm(876): threadid=11: thread exiting with uncaught exception (group=0x409c01f8)
09-06 06:23:00.999: E/AndroidRuntime(876): FATAL EXCEPTION: AsyncTask #1
09-06 06:23:00.999: E/AndroidRuntime(876): java.lang.RuntimeException: An error occured while executing doInBackground()
09-06 06:23:00.999: E/AndroidRuntime(876):    at android.os.AsyncTask$3.done(AsyncTask.java:278)
09-06 06:23:00.999: E/AndroidRuntime(876):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
09-06 06:23:00.999: E/AndroidRuntime(876):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
09-06 06:23:00.999: E/AndroidRuntime(876):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
09-06 06:23:00.999: E/AndroidRuntime(876):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
09-06 06:23:00.999: E/AndroidRuntime(876):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
09-06 06:23:00.999: E/AndroidRuntime(876):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
09-06 06:23:00.999: E/AndroidRuntime(876):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
09-06 06:23:00.999: E/AndroidRuntime(876):    at java.lang.Thread.run(Thread.java:856)
09-06 06:23:00.999: E/AndroidRuntime(876): Caused by: java.lang.NullPointerException
09-06 06:23:00.999: E/AndroidRuntime(876):    at org.apache.http.impl.client.AbstractHttpClient.determineTarget(AbstractHttpClient.java:496)
09-06 06:23:00.999: E/AndroidRuntime(876):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
09-06 06:23:00.999: E/AndroidRuntime(876):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
09-06 06:23:00.999: E/AndroidRuntime(876):    at com.example.nn.DownloadFilesTask.doInBackground(MainActivity.java:78)
09-06 06:23:00.999: E/AndroidRuntime(876):    at com.example.nn.DownloadFilesTask.doInBackground(MainActivity.java:1)
09-06 06:23:00.999: E/AndroidRuntime(876):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
09-06 06:23:00.999: E/AndroidRuntime(876):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
09-06 06:23:00.999: E/AndroidRuntime(876):    ... 5 more
09-06 06:23:01.839: W/IInputConnectionWrapper(876): showStatusIcon on inactive InputConnection
09-06 06:23:02.349: I/Process(876): Sending signal. PID: 876 SIG: 9




--------------------
Мы делаем игрыЗДЕСЬ
PM MAIL WWW ICQ   Вверх
math64
Дата 6.9.2012, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 1
Всего: 72



А теперь httpPost без url
Код

HttpPost httpPost = new HttpPost(urls[0]);
.
PM   Вверх
Miller_time
Дата 6.9.2012, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 8.9.2006
Где: Нижний Новгород

Репутация: нет
Всего: 1



Нашел проблему в прокси извиняюсь решение оказалось проще чем думал 


Код

class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
    private static final String TAG = null;

    protected Long doInBackground(URL... urls) {

     
        InputStream content = null;
          try {
            HttpClient httpclient = new DefaultHttpClient();
            
            HttpHost proxy = new HttpHost("proxy", 3128);
            httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
            
            HttpResponse response = httpclient.execute(new HttpGet(urls[0].toString()));
            HttpEntity content_ent = response.getEntity();
            String  xml = EntityUtils.toString(content_ent);
            Log.d(TAG, xml);
            
          } catch (Exception e) {
            Log.d(TAG, "error -"+e.toString());
          }
        
        return (long) 123;
    }



Это сообщение отредактировал(а) Miller_time - 6.9.2012, 11:52


--------------------
Мы делаем игрыЗДЕСЬ
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0479 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.