Страница 1 из 1

Проблема с подключением к интернету

Добавлено: 04 мар 2014, 11:27
SwitchOFF
На телефоне 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)

Когда запускаю пошаговое выполнение на эмуляторе 4.х.х - указывает на строку:

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

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; 
    } 
Сайт рабочий, открывается со всех устройств. Подскажите, куда копать)

Re: Проблема с подключением к интернету

Добавлено: 04 мар 2014, 11:51
rezak90
ох ёлки, ну и код... где стринг формат? где закрытие стрима? память тичет... А NullPointerException нужно дебажить.

Re: Проблема с подключением к интернету

Добавлено: 04 мар 2014, 11:56
SwitchOFF
rezak90 писал(а):ох ёлки, ну и код... где стринг формат? где закрытие стрима? память тичет... А NullPointerException нужно дебажить.
Андроидом недавно начал заниматься.
Что касается NullPointerException.. Почему из-за него вылетает программа? Ведь он описан в try, значит должен отрабатывать catch ?

Re: Проблема с подключением к интернету

Добавлено: 04 мар 2014, 12:12
Foenix
она у тебя в эту getData и не заходит, иначе данный адрес был бы в логе. У тебя там аргумент огромный, в нем null ищи.

Re: Проблема с подключением к интернету

Добавлено: 04 мар 2014, 12:25
adarash
SwitchOFF писал(а):
rezak90 писал(а):ох ёлки, ну и код... где стринг формат? где закрытие стрима? память тичет... А NullPointerException нужно дебажить.
Андроидом недавно начал заниматься.
Что касается NullPointerException.. Почему из-за него вылетает программа? Ведь он описан в try, значит должен отрабатывать catch ?
Может сначала код нормально напишешь? глядишь и заработает. :)
по поводу названий методов, классов http://www.oracle.com/technetwork/java/ ... 35099.html. (Название методов с маленькой буквы.)

1. Кто же так параметры к запросу дает? Для этого есть специальный класс "NameValuePair"

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

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("param1", "1"));
params.add(new BasicNameValuePair("param2", "2"));
запрос делается примерно так:

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

static InputStream is = null; String result = ""; //отдельно вынесешь куда-нибуть

try {
			
				DefaultHttpClient httpClient = new DefaultHttpClient();
				String paramString = URLEncodedUtils.format(params, "utf-8");
				url += "?" + paramString;
				HttpGet httpGet = new HttpGet(url);

				HttpResponse httpResponse = httpClient.execute(httpGet);
				HttpEntity httpEntity = httpResponse.getEntity();
				is = httpEntity.getContent();
			}

		} catch (UnsupportedEncodingException e) {
			Log.e("Request", "Error UnsupportedEncodingException " + e.toString());
		} catch (ClientProtocolException e) {
			Log.e("Request", "Error ClientProtocolException " + e.toString());
		} catch (IOException e) {
			Log.e("Request", "Error IOException " + e.toString());
		}
try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(
					is, "iso-8859-1"), 8);
			StringBuilder sb = new StringBuilder();
			String line = null;
			while ((line = reader.readLine()) != null) {
				sb.append(line + "\n");
			}
			is.close();
			result= sb.toString();
		} catch (Exception e) {
			Log.e("Request", "Error read result " + e.toString());
		}
Ну это так, для общего развития.
Как написала уважаемая Foenix у тебя ошибка скорее всего в "uid.getText()" или "key.getText()".
Когда будешь добавлять параметры к запросу ("params.add(new BasicNameValuePair("param1", uid.getText().toString()));") по шагам проверь.