Android java

di il
6 risposte

Android java

Ragazzi non capisco mi succede una cosa strana, ho creato una classe su netbeans la uso e funziona correttamente, ho aperto Android studio perché devo fare un app che deve usare la prima classe che ho creato su netbeans, la copio e incollo su Android studio ma la cosa curiosa è che non funziona, come mai? Ci sono delle differenza da considerare?

6 Risposte

  • Re: Android java

    Ho trovato che si presenta questo errore, il primo che si presenta, dai siti inglese ho capito che c'entra che non puo essere nella stessa chiamata del main , ma non ho capito altro..

    il primo errore è : System.err? android.os.NetworkOnMainThreadException
  • Re: Android java

    fire7777777 ha scritto:


    Ragazzi non capisco mi succede una cosa strana, ho creato una classe su netbeans la uso e funziona correttamente, ho aperto Android studio perché devo fare un app che deve usare la prima classe che ho creato su netbeans, la copio e incollo su Android studio ma la cosa curiosa è che non funziona, come mai? Ci sono delle differenza da considerare?
    Sei forse un po' troppo evasivo e non si capisce bene qual'è il problema.
    Ci fai vedere la funzione? dove la inserisci?
  • Re: Android java

    E ma cosa faccio ti incollo tutta la pagina qui? leggendo in giro dice che httpclient da un errore da certe api in su perchè non si puo avviare due dalla main boh
  • Re: Android java

    Guarda ti allego il codice perchè ormai sono disperato ahaha :

    vado a creare l'oggetto e invocare il metodo Connetti() attraverso il clicklistener ma da disperati errori @.@ la cosa buffa è che questa classe su netbeans funziona tranquillamente , ho preso questa classe da un sito e l'ho adattata alle mie esigenze il problema è che su android come ripeto da una pentola di errori boh



    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import java.net.CookieHandler;
    import java.net.CookieManager;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.net.ssl.HttpsURLConnection;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;


    public class Connessione{

    private List<String> cookies;
    private HttpURLConnection conn;
    URL obj;
    String url;
    String gmail;
    Connessione http;

    private final String USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0";

    public Connessione() {
    url = "http://it.ogame.gameforge.com/main/logi";
    gmail = "http://s130-it.ogame.gameforge.com";
    try {
    obj = new URL(url);
    } catch (MalformedURLException ex) {
    Logger.getLogger(Connessione.class.getName()).log(Level.SEVERE, null, ex);
    }


    }

    public void Connettiti() throws Exception {

    http = new Connessione();

    // make sure cookies is turn on
    CookieHandler.setDefault(new CookieManager());

    // 1. Send a "GET" request, so that you can extract the form's data.
    String page = http.GetPageContent(url);

    String postParams = http.getFormParams(page, "user", "pass");
    postParams = "kid=&" + postParams;
    // 2. Construct above post's content and then send a POST request for
    // authentication
    http.sendPost(url, postParams);

    // 3. success then go to gmail.
    System.out.println(http.conn.getURL());

    }

    private void sendPost(String url, String postParams) throws Exception {

    conn = (HttpURLConnection) obj.openConnection();
    // Acts like a browser
    conn.setUseCaches(false);
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Host", "it.ogame.gameforge.com");
    conn.setRequestProperty("User-Agent", USER_AGENT);
    conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
    conn.setRequestProperty("Accept-Language", "it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3");
    for (String cookie : this.cookies) {
    conn.addRequestProperty("Cookie", cookie.split(";", 1)[0]);
    }
    conn.setRequestProperty("Connection", "keep-alive");

    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    conn.setRequestProperty("Content-Length", Integer.toString(72));

    conn.setDoOutput(true);
    conn.setDoInput(true);

    // Send post request
    DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
    wr.writeBytes(postParams);
    wr.flush();
    wr.close();

    int responseCode = conn.getResponseCode();
    System.out.println("\nSending 'POST' request to URL : " + url);
    System.out.println("Post parameters : " + postParams);
    System.out.println("Response Code : " + responseCode);

    BufferedReader in
    = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String inputLine;
    StringBuffer response = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
    }
    in.close();
    // System.out.println(response.toString());

    }

    private String GetPageContent(String url) throws Exception {

    URL obj = new URL(url);
    conn = (HttpURLConnection) obj.openConnection();

    // default is GET
    conn.setRequestMethod("GET");

    conn.setUseCaches(true);

    // act like a browser
    conn.setRequestProperty("(Request-Line)", "GET /game/reg/login2.php?data=S%2F7PZw5a2GTJtRLyojv2TSo33ci3nX0I0ZYPOraxLTI0URcXAdDgUSBI2BESamECUsOW2E0tLY0YOlyRXPeJxWTH60Hs8KSdZldnc9gxhObAVeeJtGBLjRP3dN9CNwMpy2xV0D3rQUnUm7KLITYjeywg6jBlZcOGcFK1mYrtPok%3D HTTP/1.1");
    conn.setRequestProperty("Host", "s130-it.ogame.gameforge.com");
    conn.setRequestProperty("User-Agent", USER_AGENT);
    conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
    conn.setRequestProperty("Accept-Language", "it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3");
    conn.setRequestProperty("Accept-Encoding", "gzip, deflate");
    conn.setRequestProperty("Referer", "http://it.ogame.gameforge.com");

    if (cookies != null) {
    for (String cookie : this.cookies) {
    conn.addRequestProperty("Cookie", cookie.split(";", 1)[0]);
    }
    }

    System.out.println("\nSending 'GET' request to URL : " + url);

    BufferedReader in
    = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String inputLine;
    StringBuffer response = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
    }
    in.close();

    // Get the response cookies
    setCookies(conn.getHeaderFields().get("Set-Cookie"));

    return response.toString();

    }

    public String getFormParams(String html, String username, String password)
    throws UnsupportedEncodingException {

    System.out.println("Extracting form's data...");

    Document doc = Jsoup.parse(html);

    // Google form id
    Element l_server = doc.getElementById("serverLogin");
    Element l_user = doc.getElementById("usernameLogin");
    Element l_password = doc.getElementById("passwordLogin");

    Elements inputElements = new Elements();
    inputElements.add(l_server);
    inputElements.add(l_user);
    inputElements.add(l_password);

    List<String> paramList = new ArrayList<String>();
    for (Element inputElement : inputElements) {
    String key = inputElement.attr("name");
    String value = inputElement.attr("value");

    if (key.equals("uni")) {
    value = "s130-it.ogame.gameforge.com";
    }

    if (key.equals("login")) {
    value = username;
    } else if (key.equals("pass")) {
    value = password;
    }

    System.out.println(key + " " + value);

    paramList.add(key + "=" + URLEncoder.encode(value, "UTF-8"));
    }

    // build parameters list
    StringBuilder result = new StringBuilder();
    for (String param : paramList) {
    if (result.length() == 0) {
    result.append(param);
    } else {
    result.append("&" + param);
    }
    }
    return result.toString();
    }

    public List<String> getCookies() {
    return cookies;
    }

    public void setCookies(List<String> cookies) {
    this.cookies = cookies;
    }

    }
  • Re: Android java

    Per prima cosa ti consiglio di attivare lo strictmode che ti da molte piu notizie su ciò che accade al tuo codice:
    nella mainactivity inserisci il seguente codice :
    public void onCreate() {
         if (DEVELOPER_MODE) {
             StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                     .detectDiskReads()
                     .detectDiskWrites()
                     .detectNetwork()   // or .detectAll() for all detectable problems
                     .penaltyLog()
                     .build());
             StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                     .detectLeakedSqlLiteObjects()
                     .detectLeakedClosableObjects()
                     .penaltyLog()
                     .penaltyDeath()
                     .build());
         }
         super.onCreate();
     }
    poi vedo che esegui le chiamate alla rete (GET PUT ecc) in sincrono. tale approccio è sconsigliato.
    E' consigliabile fare chiamate asincrone.
  • Re: Android java

    Ti invio del codice che ho scritto e che funziona in modo asincrono. Considera che è
    molto giovane e che quindi va sistemato e completato...però funziona e credo
    sia un buon punto di partenza:

    Ecco il manifest
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.post_example"
        android:versionCode="1"
        android:versionName="1.0" >
        
        
    <uses-permission android:name="android.permission.INTERNET" />
    
    
        <uses-sdk
            android:minSdkVersion="17"
            android:targetSdkVersion="17" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name=".MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
    
    la classe PostClass
    package com.post_example;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import java.net.URI;
    import java.net.URISyntaxException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;
    
    import android.os.AsyncTask;
    import android.util.Log;
    
    public class PostClass extends AsyncTask<Void, Void, Boolean>
    {
    	
    	HttpClient client;
    	HttpPost post ;
    	List<NameValuePair> pairs = new ArrayList<NameValuePair>();
    	String Response;
    	String Url;
    	@Override
        protected void onPreExecute()
    	{
    		Log.d("PostClass","onPreExecute");
        }	
    	@Override
        protected void onProgressUpdate(Void[] values) 
    	{
    		Log.d("PostClass","onProgressUpdate");
        };
    	void AddArgument(String key, String value)
    	{
    		pairs.add(new BasicNameValuePair(key, value));		
    	}
    	@Override
    	protected Boolean doInBackground(Void... arg0) 
    	{
    		Log.d("PostClass","doInBackground");
    		if(!Url.startsWith("http://")) Url="http://"+Url;
    		try 
    		{
    		   URI uri = new URI(Url);		
    		   client = new DefaultHttpClient();	
    		   post = new HttpPost(uri);
    		   try 
    		   {
    			   post.setEntity(new UrlEncodedFormEntity(pairs));
    			   Log.d("Pairs:",String.valueOf(pairs.size()));
    		   } 
    		   catch (UnsupportedEncodingException e) 
    		   {
    			   e.printStackTrace();
    		   }		 
    		   try 
    		   {
    			   Log.d("Method_NAME",post.METHOD_NAME);
    			   HttpResponse response = client.execute(post);
    			   HttpEntity entity = response.getEntity();
    			   InputStream is = entity.getContent();
    			   BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    			   StringBuilder sb = new StringBuilder();
    
    			    String line = null;
    			    try {
    			        while ((line = reader.readLine()) != null) {
    			            sb.append((line + "\n"));
    			        }
    			    } catch (IOException e) {
    			        e.printStackTrace();
    			    } finally {
    			        try {
    			            is.close();
    			        } catch (IOException e) {
    			            e.printStackTrace();
    			        }
    			    }			   
    			   Response=sb.toString();   
    		   } 
    		   catch (ClientProtocolException e) 
    		   {
    			   // TODO Auto-generated catch block
    			   Log.e("ERRORE","ClientProtocolException");
    			   e.printStackTrace();
    		   } 
    		   catch (IOException e) 
    		   {
    			   // TODO Auto-generated catch block
    			   Log.e("ERRORE","IOException");
    			   e.printStackTrace();
    		   }
    		} catch (URISyntaxException e1) 
    		{
    			// TODO Auto-generated catch block
    			Log.e("ERRORE","URISyntaxException");
    			e1.printStackTrace();
    		}
    		
    		return true;
    	}
    	
    	@Override
        protected void onPostExecute(final Boolean success) 
    	{
    		Log.d("PostClass","onPostExecute");
    		//Log.d("POST:",Response);
    		//if(dialog.isShowing()) dialog.dismiss();
        }
    
        @Override
        protected void onCancelled() 
        {
        	Log.d("PostClass","onCancelled");
            //mAuthTask = null;
        }
    	
    
    }
    
    la classe MyPostClass
    package com.post_example;
    
    import android.os.AsyncTask;
    import android.util.Log;
    import android.widget.Button;
    
    public class MyPostClass extends  PostClass 
    {
    	
    	Button button;
    	
    	MyPostClass(Button button1)
    	{
    		button=(Button) (button1);
    	    
    	}
    	@Override
        protected void onPreExecute()
    	{
    		Log.d("MyPostClass","onPreExecute");
    		button.setText("....");
        }	
    
    	@Override
        protected void onPostExecute(final Boolean success) 
    	{
    		Log.d("MyPostClass","onPostExecute");
    		button.setText("POST");
        }
    	
    }
    
    e la mainactivity
    package com.post_example;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.StrictMode;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    
    public class MainActivity extends Activity {
    	MyPostClass poster;
    	EditText text;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) 
    	{		
    		//StrictMode.enableDefaults();		
    		super.onCreate(savedInstanceState);	
    		
    		setContentView(R.layout.activity_main);
    		text= (EditText) findViewById(R.id.editText1);
    		
    		final Button button= (Button) findViewById(R.id.button1);
    		button.setOnClickListener
    	        (
    	         new View.OnClickListener()  
    	         {
    	        	@Override
    	 			public void onClick(View v) 
    	 			{
    	        		poster=new MyPostClass(button);
    	        		poster.AddArgument("Get","A0");
    	        		poster.AddArgument("Set","B0");
    	        		poster.AddArgument("Unset","B1");
    	        		String st=text.getText().toString();
    	        		poster.Url=st;
    	        		poster.execute(((Void) null));
    	        		
    	 			}
    	         }	
    	        );
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    
    	@Override
    	public boolean onOptionsItemSelected(MenuItem item) {
    		// Handle action bar item clicks here. The action bar will
    		// automatically handle clicks on the Home/Up button, so long
    		// as you specify a parent activity in AndroidManifest.xml.
    		int id = item.getItemId();
    		if (id == R.id.action_settings) {
    			return true;
    		}
    		return super.onOptionsItemSelected(item);
    	}
    }
    
    questa è la mainactivity.xml
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.post_example.MainActivity" >
    
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />
    
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:text="POST" />
    
        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/textView1"
            android:layout_marginTop="26dp"
            android:ems="10"
            android:hint="Destinazione"
            android:inputType="textUri"
            android:text="http://serverdestinatario/index.php" >
    
            <requestFocus />
        </EditText>
    
    </RelativeLayout>
    credo sia tutto. ciao.
Devi accedere o registrarti per scrivere nel forum
6 risposte