Get работает на эмуляторе, а на устройстве - нет (новичёк)

Ответить
flint_android
Сообщения: 6
Зарегистрирован: 28 фев 2014, 12:54

Get работает на эмуляторе, а на устройстве - нет (новичёк)

Сообщение flint_android » 28 фев 2014, 13:35

Это мой первый опыт программирования андроид, впрочем как и java.
Нашел пример кода, и вставил в свой проект, слегка изменив:

Код: Выделить всё

String restRequestURL ="http://xxx.xxx.com/jscheck?regplate="+n;
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGetRequest = new HttpGet(restRequestURL);
ResponseHandler<String> stringHandler = new BasicResponseHandler();
String answer="";
try {
       answer = httpClient.execute(httpGetRequest,stringHandler);
}
catch (Exception e) { 
	Toast.makeText(this, "Ошибка связи с сервером", Toast.LENGTH_LONG).show();
};
В манифесте прописал <uses-permission android:name="android.permission.INTERNET"/>
В preferences-Android-Launch-Default emulator Options прописал: -dns-server 8.8.8.8.8.8.4.4

В итоге на эмуляторе заработало. Ответ получаю и обрабатываю, а при запуске приложения с телефона получаю сообщение об ошибке...

Эмулятор версии 2.3.3. На телефоне версия 4.2.1. Физически интернет есть.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Get работает на эмуляторе, а на устройстве - нет (новичё

Сообщение Foenix » 28 фев 2014, 13:59

ну открой свою ссылку с телефона в браузере и посмотри откроетс или нет.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Get работает на эмуляторе, а на устройстве - нет (новичё

Сообщение Mikhail_dev » 28 фев 2014, 14:17

Эмулятор версии 2.3.3. На телефоне версия 4.2.1. Физически интернет есть.
Ошибка в этом.
Чтобы найти более полную информацию об ошибке, смотрите вебинар по LogCat - viewtopic.php?f=60&t=3198

SwitchOFF
Сообщения: 8
Зарегистрирован: 10 окт 2013, 17:34

Re: Get работает на эмуляторе, а на устройстве - нет (новичё

Сообщение SwitchOFF » 03 мар 2014, 00:02

У меня возникла точно такая же проблема.
На телефоне 2.3.6 - всё отлично работает. На 4.х.х - приложение закрывается системой из-за ошибки.

03-02 14:59:20.114: E/AndroidRuntime(943): FATAL EXCEPTION: main
03-02 14:59:20.114: E/AndroidRuntime(943): Process: com.example.courseandroid, PID: 943
03-02 14:59:20.114: E/AndroidRuntime(943): java.lang.NullPointerException
03-02 14:59:20.114: E/AndroidRuntime(943): at com.example.courseandroid.Index$1.onClick(Index.java:54)
03-02 14:59:20.114: E/AndroidRuntime(943): at android.view.View.performClick(View.java:4438)
03-02 14:59:20.114: E/AndroidRuntime(943): at android.view.View$PerformClick.run(View.java:18422)
03-02 14:59:20.114: E/AndroidRuntime(943): at android.os.Handler.handleCallback(Handler.java:733)
03-02 14:59:20.114: E/AndroidRuntime(943): at android.os.Handler.dispatchMessage(Handler.java:95)
03-02 14:59:20.114: E/AndroidRuntime(943): at android.os.Looper.loop(Looper.java:136)
03-02 14:59:20.114: E/AndroidRuntime(943): at android.app.ActivityThread.main(ActivityThread.java:5017)
03-02 14:59:20.114: E/AndroidRuntime(943): at java.lang.reflect.Method.invokeNative(Native Method)
03-02 14:59:20.114: E/AndroidRuntime(943): at java.lang.reflect.Method.invoke(Method.java:515)
03-02 14:59:20.114: E/AndroidRuntime(943): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
03-02 14:59:20.114: E/AndroidRuntime(943): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
03-02 14:59:20.114: E/AndroidRuntime(943): at dalvik.system.NativeStart.main(Native Method)

В отладчике указывает на строку:

Код: Выделить всё

if(!GetData("auth.php?uid="+uid.getText().toString()+"&key="+key.getText().toString()+"&noupdate=1").trim().equals("1")) Toast.makeText(getApplicationContext(),"Ошибка авторизации",Toast.LENGTH_LONG).show();
Метод:

Код: Выделить всё

public String GetData(String action)
	{
		String ret = null;
		try
		{
			HttpClient httpclient = new DefaultHttpClient();		
		    HttpResponse response= httpclient.execute(new HttpGet("http://mysite.ru/"+action));			
			HttpEntity entity = response.getEntity();
			InputStream stream = entity.getContent();			
			BufferedReader reader = new BufferedReader(new InputStreamReader(stream,"UTF-8"),8);			
			ret=reader.readLine().toString();			
		}
		catch(Exception e) {Log.d("Log", e.toString());}
		
		return ret;
	}
Сайт рабочий, открывается со всех устройств. Подскажите, в чём ошибка вообще и как поправить?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Get работает на эмуляторе, а на устройстве - нет (новичё

Сообщение Foenix » 03 мар 2014, 00:13

тут твоя ошибка, а не там, где ты показываешь
at com.example.courseandroid.Index$1.onClick(Index.java:54)
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

flint_android
Сообщения: 6
Зарегистрирован: 28 фев 2014, 12:54

Re: Get работает на эмуляторе, а на устройстве - нет (новичё

Сообщение flint_android » 03 мар 2014, 20:03

Foenix писал(а):ну открой свою ссылку с телефона в браузере и посмотри откроетс или нет.
В браузере это работает.

flint_android
Сообщения: 6
Зарегистрирован: 28 фев 2014, 12:54

Re: Get работает на эмуляторе, а на устройстве - нет (новичё

Сообщение flint_android » 03 мар 2014, 20:07

m090050 писал(а):
Эмулятор версии 2.3.3. На телефоне версия 4.2.1. Физически интернет есть.
Ошибка в этом.
Чтобы найти более полную информацию об ошибке, смотрите вебинар по LogCat - viewtopic.php?f=60&t=3198
Михаил, спасибо, посмотрел вебинар. Много полезного. Но увы прямого ответа на мой вопрос там нет. И я не знаю, как отловить ошибку, которая возникает не в эмуляторе, а в телефоне...
Уважаю Ваше стремление бороться за качество подрастающих программистов, но был бы счастлив получить более точное указание на мою ошибку :)

flint_android
Сообщения: 6
Зарегистрирован: 28 фев 2014, 12:54

Re: Get работает на эмуляторе, а на устройстве - нет (новичё

Сообщение flint_android » 03 мар 2014, 20:50

Решил попробовать запустить эмулятор 4.0. Поправил в манифесте своего приложения min и target SDK Version с 14 (было 10). Эмулятор 4.0. запускается, но при этом выдаёт:

[2014-03-03 20:44:43 - app_my] Failed to install app_my.apk on device 'emulator-5554': EOF
[2014-03-03 20:44:43 - app_my] java.io.IOException: EOF
[2014-03-03 20:44:43 - app_my] Launch canceled!

В чем может быть причина?

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Get работает на эмуляторе, а на устройстве - нет (новичё

Сообщение Mikhail_dev » 03 мар 2014, 22:44

Ответа прямого там нет, но там есть то, как найти ошибку. А ошибка у вас скорее всего android.os.NetworkOnMainThreadException. Если загуглить по ней, то можно найти неимоверно много ответов что это за ошибка, как на русском языке, так и на английском.

На счет того, как ловить ошибки в самом телефоне, не используя эмулятор, можно найти статью в моей подписи, предпоследнюю. И кстати я так и не понял, в чем собственно проблема получить лог телефона. В вебинаре я показывал как получить ошибку эмулятора, но тоже самое относится и к обычному телефону. Выбираем телефон и получаем ошибку. Мне кажется вы либо не смотрели вебинар, либо смотрели его слишком поверхностно.

flint_android
Сообщения: 6
Зарегистрирован: 28 фев 2014, 12:54

Re: Get работает на эмуляторе, а на устройстве - нет (новичё

Сообщение flint_android » 10 мар 2014, 13:56

m090050 писал(а):Ответа прямого там нет, но там есть то, как найти ошибку. А ошибка у вас скорее всего android.os.NetworkOnMainThreadException. Если загуглить по ней, то можно найти неимоверно много ответов что это за ошибка, как на русском языке, так и на английском.

На счет того, как ловить ошибки в самом телефоне, не используя эмулятор, можно найти статью в моей подписи, предпоследнюю. И кстати я так и не понял, в чем собственно проблема получить лог телефона. В вебинаре я показывал как получить ошибку эмулятора, но тоже самое относится и к обычному телефону. Выбираем телефон и получаем ошибку. Мне кажется вы либо не смотрели вебинар, либо смотрели его слишком поверхностно.
Спасибо. Разобрался. Ошибка android.os.NetworkOnMainThreadException.
Решение: http://startandroid.ru/ru/uroki/vse-uro ... rimer.html

Ответить