Jump to content
Unity Insider Forum

xml-daten von eigenem Webserver laden


peachplayer

Recommended Posts

Hallo Leute

Weiss jemand, wie man xml-dateien von einem eigenen webserver laden kann. Habs mit einem webrequest versucht, jedoch geht das nicht, d.h. es kommt

ein Http-error Fehlermeldung. Ich verwende folgenden xml-Parser:

public class MyXML  {

    static public List<T> DeserializeFromXML<T>(string path)
    {
        XmlSerializer deserializer = new XmlSerializer(typeof(List<T>));
        
        TextReader textReader = new StreamReader(path);
    
        List<T> list;
        list = (List<T>)deserializer.Deserialize(textReader);
        textReader.Close();

        return (List<T>)list;
    }

Dieser funktioniert jedoch nur mit lokalen Dateien. Von einem webserver kann ich keine daten laden. Geht das nur via php und mysql?

Gruss, peachplayer

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 32 Minuten schrieb peachplayer:

Geht das nur via php und mysql?

Wie du dein Backend schreibst, ist egal. php ist eine von viele Sprachen, mit denen du einen Webserver schreiben kannst, MySQL ist für Datenbanken. Die brauchst du nicht unbedingt um XML-Daten bereitzustellen.

Was du brauchst, ist Code in deiner App, die nicht auf der Festplatte nach einer Datei sucht, sondern eine HTTP-Anfrage sendet und die Antwort empfängt. Da kann der StreamReader wohl auch irgendwie helfen, aber in Unity nimmst du dafür einfach den guten UnityWebRequest.

Link zu diesem Kommentar
Auf anderen Seiten teilen

leider geht das nicht richtig. Habs wie folgt probiert:

  public IEnumerator SaveData(string Flurname, float Fläche, string Kultur, string Datum, float Ertrag, int Nummer)
    {
        string saveUrl = "http://web01.petweber.ch/Parzelle.xml";
        WWWForm form = new WWWForm();
        form.AddField("Parzellenname", Flurname);
        form.AddField("Flaeche", Fläche.ToString());
        form.AddField("Ertrag", Ertrag.ToString());
        form.AddField("Kultur", Kultur);
        form.AddField("Datum", Datum);
        form.AddField("Nummer", Nummer.ToString());
        Debug.Log(Flurname + Fläche + Kultur);

        UnityWebRequest www = UnityWebRequest.Post("http://web01.petweber.ch/Parzelle.xml", form);
      
            yield return www.SendWebRequest();

        if (www.isNetworkError || www.isHttpError)
        {
            Debug.Log(www.error);
        }
        else
        {
            Debug.Log("Form upload complete!");
        }
       
       
    }

Danach muss ich die Firewall des Servers ausschalten, damit kein Http-error kommt und es wird trotzdem nicht gespeichert. Woran liegt das?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du kannst nicht einfach Dateien auf deinem Webserver überschreiben. Du brauchst Code auf dem Server, der die Daten entgegen nimmt und in eine XML-Datei speichert. Jedem dahergelaufenen uneingeschränkt Zugriff auf Dateien auf deinem Server zu geben wäre auch wirklich keine schlaue Idee ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...