2017-07-27 5 views
0

Wenn ich versuche, die HTML-Quelle einer Website mit AndroidStudio (über meine App) zu bekommen, zeigt die Seiten verschiedene Inhalte mit der Endnachricht und ich verwende keine Web-Ansicht oder so etwas.Android php connection

Ich habe eine PHP-Datei in einem hostweb und ich möchte die Nachricht in einem Textview zeigen:

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

und mein Android-Code ist:

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; 
} 

}

und wenn Ich führe es Ich bekomme diesen Fehler

Aktivieren Sie JavaScript in Ihrem Browser. enter image description here

irgendeine idee was soll ich tun? oder ich Javascript aktivieren?

+0

Wo genau kommt dieser Fehler? Können Sie das Logcat teilen? –

+0

Ich habe eine Bilder hinzugefügt, die den Fehler @ JoeyPinto –

+0

Überprüfen Sie meine Lösung, ich habe dies vor –

Antwort

-1

Sie müssen es tun, wie dieser

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

warum down vote ??? –

+0

Es tut mir leid, vielleicht aus Versehen, weil ich Ihre Lösung ausprobiert und es ist wirklich ähnlich zu meinem Code und es funktioniert gut ... vielen Dank –

0

Die Anforderung HTTP Javascript-Code nicht verarbeiten kann. Die von Ihnen angegebene URL führt wahrscheinlich Javascript aus, um eine window.location-Umleitung an eine andere Seite zu senden. HTTP-Anfrage kann nicht damit umgehen, da es javscript nicht wie Ihr Browser-Feind ausführt und den HTML liest, wie es ist.

Um dies zu beheben, müssen Sie Ihren Umleitungscode in PHP selbst verschieben. Verwenden Sie dazu die PHP-Funktion header().

+0

vielen Dank, ich schätze es –

0

danke euch allen ich schätze es, aber ich fand den Fehler von meinem Webhosting sobald ich den Host änderte es wirklich ich benutze 000webhost jetzt.

Das erste Webhosting lief einen Bot, die Javascript aktivieren.

Ich schätze all Ihre harten Arbeiten.^_^