Avatar billede MartinLauritsen Nybegynder
05. februar 2015 - 10:45 Der er 5 kommentarer og
1 løsning

tage data fra xml node og sende i min post data webrequest

jeg har en xml fil som jeg automatisk opretter hver gange, jeg trykker send. Mit problem er at når jeg laver min webrequest. Og vil poste min xml fil tilbage til server, siger den der ingen data er.

// creating object of XML DOCument class 
        XmlDocument XmlDocObj = new XmlDocument();
        //loading XML File in memory 
        XmlDocObj.Load(Server.MapPath("opretTur.xml"));
        //Select root node which is already defined 
        XmlNode RootNode = XmlDocObj.SelectSingleNode("CreateTour");

        //Customers
        XmlNode createNode = RootNode.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "Customer", ""));

        createNode.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "RecordType", "")).InnerText = "CreateTour";
        createNode.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "UserId", "")).InnerText = Guid.NewGuid().ToString();
        createNode.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "CustomerNumber", "")).InnerText = "KundeNR";
       
gemmer min xml node
XmlDocObj.Save(Server.MapPath("opretTur.xml"));

prøver at sende den til server efter jeg har gemt
Min WebRequest
  // Create a request using a URL that can receive a post.
        WebRequest request = WebRequest.Create("min url");
        // Set the Method property of the request to POST.
        request.Method = "POST";
        // Create POST data and convert it to a byte array.


        //string postData = XmlDocObj["RecordType"].InnerText + XmlDocObj["UserId"].InnerText + XmlDocObj["CustomerNumber"].InnerText;

        string postData = ("opretTur.xml");
       
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        // Set the ContentType property of the WebRequest.
        request.ContentType = "application/xml";
        // Set the ContentLength property of the WebRequest.
        request.ContentLength = byteArray.Length;
        // Get the request stream.
        Stream dataStream = request.GetRequestStream();
        // Write the data to the request stream.
        dataStream.Write(byteArray, 0, byteArray.Length);
        // Close the Stream object.
        dataStream.Close();
        // Get the response.
        WebResponse response = request.GetResponse();
        // Display the status.
        Console.WriteLine(((HttpWebResponse)response).StatusDescription);
        // Get the stream containing content returned by the server.
        dataStream = response.GetResponseStream();
        // Open the stream using a StreamReader for easy access.
        StreamReader reader = new StreamReader(dataStream);
        // Read the content.
        string responseFromServer = reader.ReadToEnd();
        // Display the content.
        Console.WriteLine(responseFromServer);
        // Clean up the streams.
        reader.Close();
        dataStream.Close();
        response.Close();
Avatar billede MartinLauritsen Nybegynder
05. februar 2015 - 10:48 #1
såen ser min ud string postData = "opretTur.xml"; det andet var en fejl. Skal også lige siges det er først gang jeg prøver at lave det, så er lidt blank på området
Avatar billede arne_v Ekspert
05. februar 2015 - 15:22 #2
string postData = "opretTur.xml";

sender fil navnet til modtager.

Er det ikke data du vil sende til modtager?

Maaske en af:

string postData = XmlDocObj.ToString();
string postData = XmlDocObj.OuterXml;
string postData = XmlDocObj.InnerXml;
Avatar billede MartinLauritsen Nybegynder
23. februar 2015 - 13:38 #3
Mange tak Arne, det virkede helt perfekt..

hvis du sender et svar, vil jeg give dig pointene. Har lige et huritgt spørgsmål til dig, da jeg kan se du er lidt af en haj til XML.

Jeg har en XML jeg laver som ser såen herud.


        //Tours
        XmlNode Tours;
       
        Tours = XmlDocObj.CreateNode(XmlNodeType.Element, "Tours", "");
        Tours.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "Date", "")).InnerText = date.Text;
        Tours.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "Date", "")).InnerText = date.Text;
        Tours.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "NoAdults", "")).InnerText = antal.Text;
        Tours.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "NoChildren", "")).InnerText = "Ingen børn";
        Tours.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "NoWheelchair", "")).InnerText = "Ingen kørestol";
        Tours.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "Sign1", "")).InnerText = "Skilt 1";
        Tours.AppendChild(XmlDocObj.CreateNode(XmlNodeType.Element, "Sign2", "")).InnerText = "Skilt 2";

Det jeg har brug er at lave en ekstra node inde i den den Node der hedder TOURS. jeg have så det ser såen herud <TOURS><tour>Her skal data være!</tour></TOURS>
Avatar billede arne_v Ekspert
24. februar 2015 - 02:05 #4
Find den node hvor det skal indsaette og kald AppendChild paa den.
Avatar billede arne_v Ekspert
24. februar 2015 - 02:05 #5
og et svar
Avatar billede MartinLauritsen Nybegynder
24. februar 2015 - 10:39 #6
mange tak for hjælpen ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester