2017-07-27 5 views
0

Si j'essaie d'obtenir la source html d'un site Web avec AndroidStudio (via mon application), les pages affichent un contenu différent avec le message de fin et je n'utilise aucune vue Web ou quelque chose comme ça.Connexion php Android

J'ai un fichier php dans un hostweb et je veux montrer le message dans un textview:

<?php 
echo "hello from the other side"; 
?> 

et mon code android est:

public class MainActivity extends AppCompatActivity { 
TextView text; 
FloatingActionButton fab; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    fab = (FloatingActionButton) findViewById(R.id.fab); 
    text = (TextView) findViewById(R.id.text); 
    try 
    { 
     String myurl = "http://keeplearning.eb2a.com/hello.php"; 
     new MyAsyncTaskgetNews().execute(myurl); 
    }catch (Exception ex){} 


} 


private class MyAsyncTaskgetNews extends AsyncTask<String, String, String> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     String NewsData=""; 
     try 
     { 
      URL url = new URL(params[0]); 
      HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 
      InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 
      NewsData=Stream2String(in); 
      in.close(); 

      publishProgress(NewsData); 

     } catch (Exception e) { 

     } 
     return null; 
    } 

    @Override 
    protected void onProgressUpdate(String... values) { 
     try { 
      text.setText(values[0]); 
     }catch (Exception ex){ 
      ex.printStackTrace(); 
     } 
    } 
} 
public String Stream2String(InputStream inputStream) { 
    BufferedReader bureader=new BufferedReader(new InputStreamReader(inputStream)); 
    String line ; 
    String Text=""; 
    try{ 
     while((line=bureader.readLine())!=null) { 
      Text+=line; 
     } 
     inputStream.close(); 
    }catch (Exception ex){} 
    return Text; 
} 

}

et quand Je lance cette erreur

Activez JavaScript dans votre navigateur. enter image description here

aucune idée que dois-je faire? ou j'active javascript?

+0

D'où vient cette erreur? Pouvez-vous partager le logcat? –

+0

j'ai ajouté une photos montrant l'erreur @ JoeyPinto –

+0

Vérifiez ma solution, j'ai fait face à cela avant –

Répondre

-1

Vous devez le faire comme ça

public class MyAsyncTaskgetNews extends AsyncTask<String, String, String> { 


     HttpURLConnection conn; 
     URL url = null; 


     @Override 
     protected String doInBackground(String... params) { 

      try { 
     url = new URL(params[0]); 

      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
       return "exception"; 
      } 
      try { 

       conn = (HttpURLConnection)url.openConnection(); 
       conn.setReadTimeout(15000); 
       conn.setConnectTimeout(1000); 

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

       Uri.Builder builder = new Uri.Builder(); 
       String query = builder.build().getEncodedQuery(); 

       // Open connection for sending data 
       OutputStream os = conn.getOutputStream(); 
       BufferedWriter writer = new BufferedWriter(
         new OutputStreamWriter(os, "UTF-8")); 
       writer.write(query); 
       writer.flush(); 
       writer.close(); 
       os.close(); 
       conn.connect(); 

      } catch (IOException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
       return "exception"; 
      } 

      try { 

       int response_code = conn.getResponseCode(); 

       // Check if successful connection made 
       if (response_code == HttpURLConnection.HTTP_OK) { 

        // Read data sent from server 
        InputStream input = conn.getInputStream(); 
        BufferedReader reader = new BufferedReader(new InputStreamReader(input)); 
        StringBuilder result = new StringBuilder(); 
        String line; 

        while ((line = reader.readLine()) != null) { 
         result.append(line); 
        } 

        // Pass data to onPostExecute method 
        return(result.toString()); 

       }else{ 

        return("unsuccessful"); 
       } 

      } catch (IOException e) { 
       e.printStackTrace(); 
       return "exception"; 
      } finally { 
       conn.disconnect(); 
      } 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      mAuthTask = null; 

      // result contains the response, do whatever u want to do 
     } 

     @Override 
     protected void onCancelled() { 

     } 
    } 
+0

pourquoi bas vote ??? –

+0

je suis désolé peut-être par erreur parce que j'ai essayé votre solution et il est vraiment similaire à mon code et ça marche bien ... merci beaucoup –

0

La requête HTTP ne peut pas gérer le code javascript. L'URL que vous avez fournie exécute probablement du javascript pour envoyer une fenêtre window.location à une autre page. HTTP Request ne peut pas gérer cela car il n'exécute pas javscript comme les ennemis de votre navigateur et lit le HTML tel quel.

Pour résoudre ce problème, vous devez déplacer votre code de redirection vers PHP lui-même. Utilisez la fonction PHP header() pour cela.

+0

merci beaucoup je l'apprécie –

0

merci à tous je l'apprécie mais j'ai trouvé l'erreur de mon hébergeur une fois que j'ai changé l'hébergeur c'est vraiment j'utilise 000webhost maintenant.

le premier hébergeur exécutait un bot qui permet le javascript.

J'apprécie tous vos efforts.^_^