Jump to content
Unity Insider Forum

xml-daten von eigenem Webserver laden


peachplayer
 Share

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 to comment
Share on other sites

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 to comment
Share on other sites

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 to comment
Share on other sites

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 to comment
Share on other sites

Kommt zu 100% auf deinen Hoster und dein Setup dort an. Die meisten Webhoster bieten PHP an, aber Web Backends kann man mit so ziemlich jeder Sprache machen. Musst dich mal informieren, was dein Hoster dir so anbietet.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...