Textdatei vom Server editieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Textdatei vom Server editieren

    Hallo liebe Leute.
    Ich bin neu in diesem Forum und freue mich schon jetzt mehr über diesen anliegenden Themen zu erfahren.

    Ich komme direkt zu meiner Frage:
    Ich möchte eine Textdatei vom Server auslesen, was soweit auch klappt:


    Java-Quellcode

    1. public class Vorstandsmeldung extends AppCompatActivity {
    2. String TextFileURL = "http://meine.txt";
    3. TextView tvorstandsmeldung;
    4. URL url;
    5. String TextHolder = "", TextHolder2 = "";
    6. BufferedReader bufferReader;
    7. @Override
    8. protected void onCreate(Bundle savedInstanceState) {
    9. super.onCreate(savedInstanceState);
    10. setContentView(R.layout.activity_vorstandsmeldung);
    11. this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); //Ausführung nur Vertikel !!!!!
    12. tvorstandsmeldung = (TextView) findViewById(R.id.tvorstandsmeldung);
    13. MyTimerTask myTask = new MyTimerTask();
    14. Timer myTimer = new Timer();
    15. myTimer.schedule(myTask, 3000, 1000); //Auslesen in 1 Sek. Tack
    16. TextHolder = ""; //Buffer leeren
    17. new GetNotePadFileFromServer().execute(); //Text aus txt von Server auslesen
    18. }
    19. public class GetNotePadFileFromServer extends AsyncTask<Void, Void, Void> {
    20. @Override
    21. protected Void doInBackground(Void... params) {
    22. try {
    23. url = new URL(TextFileURL);
    24. bufferReader = new BufferedReader(new InputStreamReader(url.openStream()));
    25. while ((TextHolder2 = bufferReader.readLine()) != null) {
    26. TextHolder += TextHolder2;
    27. }
    28. bufferReader.close();
    29. } catch (MalformedURLException malformedURLException) {
    30. malformedURLException.printStackTrace();
    31. TextHolder = malformedURLException.toString();
    32. } catch (IOException iOException) {
    33. iOException.printStackTrace();
    34. TextHolder = iOException.toString();
    35. }
    36. return null;
    37. }
    38. @Override
    39. protected void onPostExecute(Void finalTextHolder) {
    40. tvorstandsmeldung.setText(TextHolder);
    41. super.onPostExecute(finalTextHolder);
    42. }
    43. }
    44. class MyTimerTask extends TimerTask {
    45. public void run() {
    46. System.out.println(TextHolder = "");
    47. System.out.println(new GetNotePadFileFromServer().execute());
    48. }
    49. }
    Alles anzeigen
    Nun zu meiner Frage, wie kann ich diese mit einem "PlainText" erweitern und mir einem "Button" direkt auf dem Server speichern?
    Die Eingabe sollte in einem neuen Zeilen Umbruch stattfinden (habe da was von r/n/ im Kopf bin mir aber nicht mehr sicher)
    Das Problem ist der Ansatz stehe das total auf dem Schlauch.
    Wäre schön wenn wer eine Idee oder Ansatz für mich hat.

    Danke euch im Vorfeld.

    P.S. da ich Krankheitsbedingt im Kopf nicht mehr so ganz fit bin, wäre es schon es einfach zu erläutern, da mein Kopf sonst nicht ganz hinterher kommt.

    Danke EUCH

    Achja Ziel soll es nachher, ein kleines Forum sein, wo jeder was rein schreiben kann.
    Danke nochmal

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Otti ()

  • Hallo Willkommen im Forum.
    >>Nun zu meiner Frage, wie kann ich diese mit einem "PlainText" erweitern und mir einem "Button" direkt auf dem Server speichern?


    Also einen Button direkt auf dem Server geht nicht.
    Einen PlainText musst du erstens in deiner Layout Datei erstellen. den Button auch.
    Damit der überhaupt im Layout auf den Bildschirm angezeigt werden kann.


    Auch musst du den Text und denn Button in der Activity in Java mit findViewById erstellen.
    Auf den Button brauchst du einen onKlickListner um auch Code ausführen zu können wenn der Button geklickt wird.
    Das aber alles auf dem Handy nicht auf dem Server.


    So zu deinem Code.
    Der holt jede sek. den Text von Server. Und zeigt ihn in der TextView an. Mehr eigentlich nicht.
    Frage wie wird denn der Text geändert auf dem Server?


    Wenn du sch willst das sich der text auf dem Server ändert vom Handy aus musst du auch eine Methode schreiben die das macht . Auch musst du dafür den Server anpassen. Du musst in die Textdatei auf den Server Schreiben.


    Frage was soll passieren wenn der Button gedrückt wird?
    Was soll in dem Text angezeigt werden?
    Ein Feedback auf Tipps ist auch schön. :P
  • Hallo um es dir noch etwas deutlicher zu machen. Im Moment hast du nur einen Download vom Server aber kein upload zum Server. Es wird also immer die gleiche Datei vom Server geladen wenn du sie nicht selber auf dem Server veränderst.

    Wenn du ein forum planen solltest. Würde ich das nicht in ei e Textdatei auf dem Server Speichen. Dazu ist eine Datenbank mit backend sinnvoller.


    Im deine Textdadei auf dem Server weiter zuführen brauchst du eine Methode die auf drinem Server in deine Textdatei auch scheiben darf. Bzw Text an die vorhandene Datei angehängten kann.
    Dies muss natürlich dein Server auch unterstützen. Ohne beckend und einer User abfrabe könnte das jeder der deine IP des Servers kennt. Würde ich nie machen.

    Dso wass genau willst du erreichen?
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jogimuc ()

  • Hallo Otti


    Ich sehe das du öfter online bist somit bestimmt meine Antworten gelesen hast.
    Aber leider selber noch keine Antwort gegeben hast.


    Ich hoffe dass deine Gesundheitlichen Einschreckungen nicht so groß sind das du auch nicht schreiben oder Tippen kannst.
    Sondern eventuell nur den sinn der Antworten nicht verstehst. Und dich vielleicht deshalb nicht traust zu antworten oder nachzufragen.


    Wo ist denn das Problem?


    Frage was für ein Server ist das?
    Wo steht der Server ? ich denke im lokalen Lan.

    Wenn du en Forum, Chat Planst würde ich einen Kompleten anderen weg gehen.
    Zb mit Google Firebase, Echtzeitdatenbank und User Verwaltung.
    Dann entfällt auch das ständige permanente abfragen des Servers.
    Was in einen Lan vielleicht nicht so schlimm ist aber im Internet (mobile Daten) schon.


    Das war es jetzt nun bist du am zug.
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jogimuc ()

  • Hallo

    Danke für deine schnellen antworten.

    Mir ist bewusst das der Code von mir nur eine Datei ausliest. Das hab ich soweit verstanden.
    Mit Firebase hab ich es auch schon mal versucht, aber klappt leider nicht :(
    Habe im Internet auch eine Idee mit *.php gefunden wo ich eine *.txt schreiben und lesen kann, allerdings klappt dies komischerweise nur mit meinem Handy, nicht mit jedem.
    Hiermal der Link: youtube.com/watch?v=ZxJiiPRnt24&t=1784s
    Mit dem *.php gefällt mir eingentlich ganz gut.

    Der Server ist von 1und1.

    Möchte es eigentlich sehr einfach gestalten, nur eine Seite mit Texteingabe und Button zum senden, das auf der Seite in einem Textfeld der Verlauf des geschriebenen angezeigt wird.
  • Hallo @Otti


    Habe im Internet auch eine Idee mit *.php gefunden wo ich eine *.txt schreiben und lesen kann, allerdings klappt dies komischerweise nur mit meinem Handy, nicht mit jedem.
    wie hast du denn die App auf dein Handy übertragen?

    für ein anderes nicht mit usb verbundenes gerät erstelle eine signed APK.


    das was vom studio per usb an dfein gerät ubertragen wird ist eine debugversion nur für dein gerät.

    im Menue unter Build / Build bundle /Build APK
    wird dann eine debug apk für alle geräte erstellt die du dann im
    \build\outputs\apk\debugfindest und weitergeben kannst

    oder eben die Signed APK



    in den Video ist eigentlich alles wass du willst und brauchst.
    Ein Feedback auf Tipps ist auch schön. :P
  • HEy.

    Habe ich an meinem Huawei P20 uber USB Debug gemacht, da klappt es.
    Das selbe habe ich mit einem ältern S5 gemacht da klappt es nicht und mit dem Huawei P10 von meine Schwester klappt es auch nicht.

    Habe es soeben nochmal mit dem *.php getestet, jetzt geht garnix mehr ???
    Was mach ich denn falsch?

    Quellcode

    1. public class MainActivity extends AppCompatActivity {
    2. EditText et;
    3. Button btn;
    4. TextView tv;
    5. final String scripturlstring = "http://meine.php";
    6. @Override
    7. protected void onCreate(Bundle savedInstanceState) {
    8. super.onCreate(savedInstanceState);
    9. setContentView(R.layout.activity_main);
    10. et = (EditText) findViewById(R.id.editText);
    11. tv = (TextView) findViewById(R.id.textView);
    12. btn = (Button) findViewById(R.id.button);
    13. btn.setOnClickListener(new View.OnClickListener() {
    14. @Override
    15. public void onClick(View view) {
    16. sendtoserver(et.getText().toString());
    17. }
    18. });
    19. }
    20. public void sendtoserver (final String text ){
    21. new Thread(new Runnable() {
    22. @Override
    23. public void run() {
    24. try {
    25. String textparam ="text1=" + URLEncoder.encode(text,"UTF-8");
    26. URL scripturl = new URL(scripturlstring);
    27. HttpURLConnection connection = (HttpURLConnection) scripturl.openConnection();
    28. connection.setDoOutput(true);
    29. connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    30. connection.setFixedLengthStreamingMode(textparam.getBytes().length);
    31. //senden
    32. OutputStreamWriter contentWriter = new OutputStreamWriter(connection.getOutputStream());
    33. contentWriter.write(textparam);
    34. contentWriter.flush();
    35. contentWriter.close();
    36. //antwort
    37. InputStream answerInputStream = connection.getInputStream();
    38. final String answer = getTextFromImputStream(answerInputStream);
    39. runOnUiThread(new Runnable() {
    40. @Override
    41. public void run() {
    42. tv.setText(answer);
    43. }
    44. });
    45. answerInputStream.close();
    46. connection.disconnect();
    47. } catch (MalformedURLException e) {
    48. e.printStackTrace();
    49. } catch (IOException e) {
    50. e.printStackTrace();
    51. }
    52. }
    53. }).start();
    54. }
    55. public String getTextFromImputStream(InputStream is) {
    56. BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    57. StringBuilder stringBuilder = new StringBuilder();
    58. String aktuellezeile;
    59. try {
    60. while ((aktuellezeile = reader.readLine()) != null) {
    61. stringBuilder.append(aktuellezeile);
    62. stringBuilder.append("\n");
    63. }
    64. } catch (IOException e) {
    65. e.printStackTrace();
    66. }
    67. return stringBuilder.toString().trim();
    68. }
    69. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Otti ()

  • Hallo


    habe mir jetzt deinen Code noch nicht angesehen.

    Erste frage ist welchemin SDK Version benutzt du im Gadle File?

    Welche API Version ist auf dem S5 ?

    Wenn du S5 auch über Usb angeschlossen und übertragen hast sollte es gehen außer du hast die falsche min SDK Version da hattest du aber einen Hinweis bekommen müssen.

    Stelle die minSDK Version mal auf 19 Android 4.4. erzeuge eine richtige signed APK V1 und V2 diese Apk kopierst du auf die sd karte des Handys und installierst sie von dort aus vorher solltest du auch die alte App die nicht ging vom Handy löchern.
    Ein Feedback auf Tipps ist auch schön. :P
  • ob du einen fehler in deinem Code hast kann ich nicht sagen sehe ich ja nicht.

    mache es so wie im video dann wird es gehn.

    wenn du es auf beiden Handys mit usb Debug übertragen willst musst du nacheinander beide Handys an stecken. Jedes Mal am besten vorher ein new BUILD am besten auch ein Cradle sync machen. Damit die genau für das angesteckte Handy eine APK erstellt wird.
    Dann hast du aber wieder auf beiden Handys eine APK Version die du nicht weiter geben kannst die geht dann nur auf dem Handy auf dem es übertragen wurde.
    wie du eine allgemeingültige APK erstellst habe ich dir schon gesagt.

    Ps du musst ja nicht mal den Code abtippen er hat ihn ja bei Github veröffentlicht der link ist unten in der beschreibung.
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von jogimuc ()

  • Hallo Jogimuc

    Beim starten der App und eingabe in die Textzeile, wird der Text nicht übertragen und eine Rückantwort kommt auch nie.

    Da es gestern mit dem code nicht ging (an kein handy) habe ich diesen einfach mal herunter geladen, wie du geschrieben hast. allerdings klappt es jetzt garnicht mehr, verstehe nicht wieso?
    habe in der manifest - internet und network state konotrolliert.

    beim drücken des buttons bekomme ich auch meldung sobald ich wlan am handy ausmache. allerdings wird kein text übertragen bzw bekomm keine antwort vom server wenn ich wlan wieder einschalte.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Otti ()

  • hallo
    Um einiges klar zustellen.
    Ist das Problem auf beiden Handys?
    Du sagtest das es vor deinen nicht abspeichern ging stimmt das wirklich?

    Ich denke das Problem liegt beim Server in PHP Script.oder bei den rechten die das script auf dem Server hatt.
    Kannst du den das script im win bowser ausführen?
    Hast du die deinem Server überhaupt PHP Support kannst du überhaupt PHP ausführen auf deinem Server?
    Stimmt die Web Adresse?


    Was sagt denn das Error Log? Poste das mal.


    final String scripturlstring = "http://meine.php";
    Die Web Adresse kann auf keinen Fall Stimmen. Wo ist dein Domain Name.
    ?



    Bitte antworte auf meine Fragen.
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jogimuc ()

  • huhu

    - ja jetzt geht es auf keinem handy mehr
    - ja vorher ging es auf meinem huawei p20, wirklich!
    - php kann ich ausführen, wenn ich die php im browser aufrufe steht dort: kein text empfang, wie in der *.php
    - der server überstüzt php
    - die adresse habe ich mit copy/paste extra eingefügt das ich mich nicht vertue.


    JUHU habe den Fehler gefunden
    Das hat gefehlt

    android:usesCleartextTraffic="true"
  • nachdem ich nun auch wie du gesagt hast die minsdk geändert habe klappt es auch auf dem anderen handy , im browser auch.
    Danke dir das du mich so gut ünterstützt hast, vielen dank
    jetzt muss ich nur noch gucken wie ich als als kleines forum umbauen kann, mit text txt laden beim start usw.
    Danke schön noch mal.
  • @jogimuc

    Hätte noch mal eine keine frage die bestimmt sehr einfach für dich ist.
    aktuell ist es so das deine txt auf dem server untereinander aufgelistet wird

    wie kann ich das in meinem Textview wieder geben? Aktuell steht es alles neben einander, der zeilenumbruch ist nicht da?!?Würde mich sehr freuen wenn du mir da einen Tip geben kannst.Da war was mit /r/n weis aber nicht wie ich es anweden soll :(