Android api, pobieranie źródła strony

0

Cześć,
piszę aplikację pod Android 4.0 i mam problem z pobraniem źródła strony(internet).
MOJE KODY:

MainActivity.java

package com.example.gj;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;


import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        try {
			String source="";
	        URL url;
			url = new URL("http://localhost/gj-webservice/rest_login.php");
	        InputStream response = url.openStream();
	        BufferedReader reader = new BufferedReader(new InputStreamReader(response));
	        for (String line; (line = reader.readLine()) != null;) {
	            source+=line;
	        }
	        reader.close();
	        Toast.makeText(getApplicationContext(), source, Toast.LENGTH_LONG).show();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			Toast.makeText(getApplicationContext(), (CharSequence) e, Toast.LENGTH_LONG).show();
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			Toast.makeText(getApplicationContext(), (CharSequence) e, Toast.LENGTH_LONG).show();
			
		}

        Toast.makeText(getApplicationContext(), "xxxx", Toast.LENGTH_LONG).show();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

AndroidManifest.xml

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.gj"
    android:versionCode="1"
    android:versionName="1.0" >
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Po uruchomieniu pojawia mi się komunikat, że aplikacja musiała zostać zamknięta. a konsola w Eclipse zwraca mi komunikat
"Nawiązane połączenie zostało przerwane przez oprogramowanie zainstalowane w komputerze-hoście".

Macie może pomysł o co chodzi? co mam źle? A może znacie jakieś lepsze rozwiązanie?

dzięki z góry ;)

0

A co by ci to miało pobrać? o_O Zdajesz sobie sprawę z tego że powinieneś tu mieć normalny adres IP a nie localhost? Problem w tym że adres jest z d**y, więc się strona nie otwiera a ty chcesz z tego czytać.

0

Racja, ale podawałem też normalne adresy np "www.wp.pl", "http://www.wp.pl", "http://212.77.100.101", "212.77.100.101" - problem nie znika.
O co może chodzić?

0

Włącz logger na androidzie i pokaż stacktrace

0

a jak to zrobić? nie mogę tego znaleźć.

Ale zauważyłem coś jeszcze. Przerobiłem program tak, żeby połączenie i pobieranie źródła następowało po kliknięciu na Button.
Uruchomiłem program na dwóch urządzeniach, podłączonych do tego samego łącza internetowego:

  1. Telefon Samsung Galaxy Mini (android 2.2.1)
  2. Tablet GoClever TAB a93 (android 4.0.4). Aplikacja napisana jest pod Android 2.1.

Na telefonie wszystko działa tak jak należy, a na tablecie aplikacja uruchamia się ok ale po kliknięciu na Button wyskakuje komunikat "Aplikacja musiała zostać nieoczekiwanie zamknięta".

Tę samą aplikację skompilowałem również pod Android 4.0 - efekt na tablecie ten sam, na telefonie oczywiście się nie uruchomiło ze względu na wersję systemu.

Załączam aktualny kod:

package com.example.gj;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;



import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button next = (Button) findViewById(R.id.button1);
        next.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {
                try {
        			String x = pobierz("http://www.google.pl");
        			Toast.makeText(getApplicationContext(), x, Toast.LENGTH_LONG).show();
        		} catch (MalformedURLException e) {
        			Toast.makeText(getApplicationContext(), (CharSequence) e, Toast.LENGTH_LONG).show();
        		} catch (IOException e) {
        			Toast.makeText(getApplicationContext(), (CharSequence) e, Toast.LENGTH_LONG).show();
        			
        		}
            }
        }); 
    }
    public static String pobierz(String link) throws MalformedURLException, IOException {
        String source = "";
        URL akt = new URL(link);
        BufferedReader in = new BufferedReader(new InputStreamReader(akt.openStream(), "utf-8"));
        String linia;
        while ((linia = in.readLine()) != null) {
            source += linia + "\n";
        }
        in.close();
        return source;
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

pozdrawiam :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1