Avatar billede mercutio Nybegynder
27. februar 2004 - 16:13 Der er 20 kommentarer og
1 løsning

Et lille program jeg godt kunne bruge (helst bare sourcen)

Jeg mangler et program lavet i .NET med c# som kan tage alle xml filer fra en folder og poste dem til en uri efter eget valgt. Det ville være helt perfekt hvis der er to text bokse hvori man kan skrive en uri i den ene og en folder i den anden hvorfra den skal tage filerne og så en knap der starter processen.
Det er et værktøj jeg skal bruge til at teste et java program jeg har lavet der skal modtage xml filer.
Jeg vil meget gerne lære at kode .NET så hvis koden er kommenteret er det jo bare dejligt.
På forhånd tak.
Merc.
Avatar billede mercutio Nybegynder
27. februar 2004 - 16:14 #1
Programmet eller sourcen må gerne sendes til bille_ole@hotmail.com
Avatar billede burningice Nybegynder
27. februar 2004 - 16:19 #2
nogen bestemt udformning af de data der skal postet? skal det være bimært, og hvad er navnene på de forskellige form-felter?
Avatar billede mercutio Nybegynder
27. februar 2004 - 16:25 #3
dataene der skal postes er xml filer men de skal postes som en lang string med indholdet det er altså teksten i filen der skal postes og ikke selve filen. Du bestemmer selv navnene på form felterne jeg er ikke begyndt på programmet
Avatar billede mercutio Nybegynder
27. februar 2004 - 16:30 #4
eller det request i modtager programmet jeg laver læser sådan her
String xml = request.getParameter("$xmldata");
Så i din post skal der stå $xmldata="indhold af xmlfil"
Avatar billede burningice Nybegynder
27. februar 2004 - 16:37 #5
oki... kan ikke love noget, men vil da lige kigge på det.
Avatar billede burningice Nybegynder
27. februar 2004 - 17:37 #6
well... en version 0.5 :)

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.IO;

namespace SendXmlToWebpage
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.TextBox txtSourceFolder;
        private System.Windows.Forms.TextBox txtDestinationUri;
        private System.Windows.Forms.Button btnBrowse;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Button btnSend;
        private System.Windows.Forms.Label lblResponse;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.txtSourceFolder = new System.Windows.Forms.TextBox();
            this.txtDestinationUri = new System.Windows.Forms.TextBox();
            this.btnBrowse = new System.Windows.Forms.Button();
            this.label1 = new System.Windows.Forms.Label();
            this.label2 = new System.Windows.Forms.Label();
            this.btnSend = new System.Windows.Forms.Button();
            this.lblResponse = new System.Windows.Forms.Label();
            this.SuspendLayout();
            //
            // txtSourceFolder
            //
            this.txtSourceFolder.Location = new System.Drawing.Point(112, 56);
            this.txtSourceFolder.Name = "txtSourceFolder";
            this.txtSourceFolder.Size = new System.Drawing.Size(168, 20);
            this.txtSourceFolder.TabIndex = 0;
            this.txtSourceFolder.Text = "";
            //
            // txtDestinationUri
            //
            this.txtDestinationUri.Location = new System.Drawing.Point(112, 24);
            this.txtDestinationUri.Name = "txtDestinationUri";
            this.txtDestinationUri.Size = new System.Drawing.Size(464, 20);
            this.txtDestinationUri.TabIndex = 1;
            this.txtDestinationUri.Text = "";
            //
            // btnBrowse
            //
            this.btnBrowse.Location = new System.Drawing.Point(504, 56);
            this.btnBrowse.Name = "btnBrowse";
            this.btnBrowse.TabIndex = 2;
            this.btnBrowse.Text = "Browse";
            this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click);
            //
            // label1
            //
            this.label1.Location = new System.Drawing.Point(32, 56);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(56, 16);
            this.label1.TabIndex = 3;
            this.label1.Text = "Source";
            //
            // label2
            //
            this.label2.Location = new System.Drawing.Point(32, 24);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(56, 16);
            this.label2.TabIndex = 4;
            this.label2.Text = "Destination";
            //
            // btnSend
            //
            this.btnSend.Location = new System.Drawing.Point(504, 96);
            this.btnSend.Name = "btnSend";
            this.btnSend.TabIndex = 5;
            this.btnSend.Text = "Send";
            this.btnSend.Click += new System.EventHandler(this.btnSend_Click);
            //
            // lblResponse
            //
            this.lblResponse.Location = new System.Drawing.Point(32, 96);
            this.lblResponse.Name = "lblResponse";
            this.lblResponse.Size = new System.Drawing.Size(448, 288);
            this.lblResponse.TabIndex = 6;
            this.lblResponse.Text = "label3";
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(632, 413);
            this.Controls.Add(this.lblResponse);
            this.Controls.Add(this.btnSend);
            this.Controls.Add(this.label2);
            this.Controls.Add(this.label1);
            this.Controls.Add(this.btnBrowse);
            this.Controls.Add(this.txtDestinationUri);
            this.Controls.Add(this.txtSourceFolder);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }

        private void btnBrowse_Click(object sender, System.EventArgs e)
        {
            FolderBrowserDialog sourceFolder = new FolderBrowserDialog();
            sourceFolder.ShowNewFolderButton = false;
            sourceFolder.ShowDialog();

            if (sourceFolder.SelectedPath != String.Empty)
            {
                txtSourceFolder.Text = sourceFolder.SelectedPath;
            }
        }

        private void btnSend_Click(object sender, System.EventArgs e)
        {
            DirectoryInfo dir = new DirectoryInfo(txtSourceFolder.Text);
            FileInfo[] files = dir.GetFiles();
           
            int count = files.Length;
            int processed = 0;

            foreach (FileInfo file in files)
            {
                if (file.Extension == ".xml")
                {
                    StreamReader reader = file.OpenText();
                    string s = reader.ReadToEnd();

                    lblResponse.Text = postToUrl(s, txtDestinationUri.Text);

                    processed++;
                }
            }
        }

        private string postToUrl(string data, string url)
        {
            Uri uri = new Uri(url);

            WebRequest wr = WebRequest.Create(uri);
            wr.Method = "POST";
            wr.ContentType = "application/x-www-form-urlencoded";
           
            writeToUrl(wr, data);
       
            string response = retrieveFromURL(wr);

            return response;
        }

        private void writeToUrl(WebRequest request, string data)
        {
            byte[] bytes = System.Text.Encoding.ASCII.GetBytes(data);
            request.ContentLength = bytes.Length;
            Stream outputStream = request.GetRequestStream();

            outputStream.Write(bytes, 0, bytes.Length);
            outputStream.Close();
        }

        private string retrieveFromURL (WebRequest request)
        {
            WebResponse response = request.GetResponse();
            Stream responseStream = response.GetResponseStream();

            StreamReader reader = new StreamReader (responseStream);

            return reader.ReadToEnd ();
        }
    }
}
Avatar billede burningice Nybegynder
27. februar 2004 - 17:38 #7
er ikke testet om modtageren i den anden ende rent faktisk kan bruge data'erne til noget, plus at der mangler kommentarer... det kommer lidt senere
Avatar billede mercutio Nybegynder
27. februar 2004 - 17:47 #8
Jeg kan ikke kompilere og køre programmet. Er du sikker på du har alle de namespaces med du skal bruge? den brokker sig over FolderBrowserDialog
Avatar billede burningice Nybegynder
27. februar 2004 - 18:08 #9
ah... den er kompilet op mod version 1.1 af .Net frameworket
Avatar billede mercutio Nybegynder
27. februar 2004 - 18:54 #10
hmmm hvad gør vi ved det? =) kan det laves så den kan bruges mod det nye framework?
Avatar billede burningice Nybegynder
27. februar 2004 - 19:09 #11
altså... den kode jeg har lavet er beregnet til .Net framework 1.1. Du har åbenbart kun 1.0 installeret
Avatar billede mercutio Nybegynder
28. februar 2004 - 23:28 #12
Hmm prøver at få opgraderet mit frameweork men jeg har lidt problemer med det...
Avatar billede arne_v Ekspert
29. februar 2004 - 08:59 #13
Du bruger forhåbentligt ikke VS.NET 2002 !?

(.NET SDK 1.0 og VS.NET 2002 hører sammen, .NET SDK 1.1 og VS.NET 2003 ditto)
Avatar billede mercutio Nybegynder
01. marts 2004 - 15:26 #14
Jo jeg kører 2002 så surt show. Men jeg tror vi har en licens til den nye så jeg får det lige opgraderet ved næste mulighed...
Avatar billede burningice Nybegynder
01. marts 2004 - 15:42 #15
:) well.. hvis du bare installerer SDK 1.1 kan du compile manuelt via kommandolinjen (csc).

jeg kigger lige lidt mere på koden... min kæreste fik lige indført computerfri weekend ;)
Avatar billede burningice Nybegynder
01. marts 2004 - 15:58 #16
mon ikke det her skulle kunne gøre det? jeg har endnu ikke testet hvordan data'erne ser ud når serveren modtager dem.

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.IO;

namespace SendXmlToWebpage
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {   
        #region Design-controls
        private System.Windows.Forms.TextBox txtSourceFolder;
        private System.Windows.Forms.TextBox txtDestinationUri;
        private System.Windows.Forms.Button btnBrowse;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Button btnSend;
        private System.Windows.Forms.Label lblResponse;
        #endregion
       
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.txtSourceFolder = new System.Windows.Forms.TextBox();
            this.txtDestinationUri = new System.Windows.Forms.TextBox();
            this.btnBrowse = new System.Windows.Forms.Button();
            this.label1 = new System.Windows.Forms.Label();
            this.label2 = new System.Windows.Forms.Label();
            this.btnSend = new System.Windows.Forms.Button();
            this.lblResponse = new System.Windows.Forms.Label();
            this.SuspendLayout();
            //
            // txtSourceFolder
            //
            this.txtSourceFolder.Location = new System.Drawing.Point(112, 56);
            this.txtSourceFolder.Name = "txtSourceFolder";
            this.txtSourceFolder.Size = new System.Drawing.Size(168, 20);
            this.txtSourceFolder.TabIndex = 0;
            this.txtSourceFolder.Text = "";
            //
            // txtDestinationUri
            //
            this.txtDestinationUri.Location = new System.Drawing.Point(112, 24);
            this.txtDestinationUri.Name = "txtDestinationUri";
            this.txtDestinationUri.Size = new System.Drawing.Size(464, 20);
            this.txtDestinationUri.TabIndex = 1;
            this.txtDestinationUri.Text = "";
            //
            // btnBrowse
            //
            this.btnBrowse.Location = new System.Drawing.Point(504, 56);
            this.btnBrowse.Name = "btnBrowse";
            this.btnBrowse.TabIndex = 2;
            this.btnBrowse.Text = "Browse";
            this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click);
            //
            // label1
            //
            this.label1.Location = new System.Drawing.Point(32, 56);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(56, 16);
            this.label1.TabIndex = 3;
            this.label1.Text = "Source";
            //
            // label2
            //
            this.label2.Location = new System.Drawing.Point(32, 24);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(56, 16);
            this.label2.TabIndex = 4;
            this.label2.Text = "Destination";
            //
            // btnSend
            //
            this.btnSend.Location = new System.Drawing.Point(504, 96);
            this.btnSend.Name = "btnSend";
            this.btnSend.TabIndex = 5;
            this.btnSend.Text = "Send";
            this.btnSend.Click += new System.EventHandler(this.btnSend_Click);
            //
            // lblResponse
            //
            this.lblResponse.Location = new System.Drawing.Point(32, 96);
            this.lblResponse.Name = "lblResponse";
            this.lblResponse.Size = new System.Drawing.Size(448, 288);
            this.lblResponse.TabIndex = 6;
            this.lblResponse.Text = "label3";
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(632, 413);
            this.Controls.Add(this.lblResponse);
            this.Controls.Add(this.btnSend);
            this.Controls.Add(this.label2);
            this.Controls.Add(this.label1);
            this.Controls.Add(this.btnBrowse);
            this.Controls.Add(this.txtDestinationUri);
            this.Controls.Add(this.txtSourceFolder);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }
       
        /// <summary>
        /// Opens the "Browse for folder"-dialog"
        /// </summary>
        /// <param name="sender">The control wich triggered this event</param>
        /// <param name="e">Parameters associated with the event</param>
        private void btnBrowse_Click(object sender, System.EventArgs e)
        {
            FolderBrowserDialog sourceFolder = new FolderBrowserDialog();
            sourceFolder.ShowNewFolderButton = false;
            sourceFolder.ShowDialog();
           
            //If the user selected a folder put the folder-path into the source-textbox
            if (sourceFolder.SelectedPath != String.Empty)
            {
                txtSourceFolder.Text = sourceFolder.SelectedPath;
            }
        }
       
        /// <summary>
        /// Starts the sending of xml-files in the selected folder
        /// </summary>
        /// <param name="sender">The control wich triggered this event</param>
        /// <param name="e">Parameters associated with the event</param>
        private void btnSend_Click(object sender, System.EventArgs e)
        {
            //Get all the files in the selected folder
            DirectoryInfo dir = new DirectoryInfo(txtSourceFolder.Text);
            FileInfo[] files = dir.GetFiles();
           
            //How many files are there, and how many has been sent?
            int count = files.Length;
            int processed = 0;

            foreach (FileInfo file in files)
            {
                //Check for the correct extension
                if (file.Extension == ".xml")
                {
                    //Read the content into a string
                    StreamReader reader = file.OpenText();
                    string s = reader.ReadToEnd();
                   
                    //Post the file and write the server-respond into out label
                    lblResponse.Text = postToUrl(s, txtDestinationUri.Text);
                   
                    //Increase the number of processed files
                    processed++;
                }
            }
        }
       
        /// <summary>
        /// Post a string to a url
        /// </summary>
        /// <param name="data">The data to be posted</param>
        /// <param name="url">The url to where the data are beeing posted to</param>
        /// <returns>The response from server</returns>
        private string postToUrl(string data, string url)
        {
            //Create a URI from the desired url
            Uri uri = new Uri(url);
           
            //Create a WebRequest for posting our data
            WebRequest wr = WebRequest.Create(uri);
            wr.Method = "POST";
            wr.ContentType = "application/x-www-form-urlencoded";
           
            //Post the data via our WebRequest
            writeToUrl(wr, data);
       
            return retrieveFromURL(wr);
        }
       
        /// <summary>
        /// Write a string to a WebRequest
        /// </summary>
        /// <param name="request">The WebRequest we want to write our data to</param>
        /// <param name="data">The data</param>
        private void writeToUrl(WebRequest request, string data)
        {
            //Convert the string to bytes
            byte[] bytes = System.Text.Encoding.ASCII.GetBytes(data);
            request.ContentLength = bytes.Length;
           
            //Get the outputstream and write the bytes to our WebRequest
            Stream outputStream = request.GetRequestStream();
            outputStream.Write(bytes, 0, bytes.Length);
            outputStream.Close();
        }
       
        /// <summary>
        /// Retrieve a responds from the server
        /// </summary>
        /// <param name="request">The WebRequest to retrive the respond from</param>
        /// <returns>The response from server</returns>
        private string retrieveFromURL(WebRequest request)
        {
            //Get the response and read the stream
            WebResponse response = request.GetResponse();
            Stream responseStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(responseStream);
           
            return reader.ReadToEnd ();
        }
    }
}
Avatar billede mercutio Nybegynder
01. marts 2004 - 18:06 #17
Jeg får den nye visual studio i morgen så jeg kigger på det i morgen =) Nogle gange er en computerfri weekend nok også godt nok... Men tusind tak for hjælpen indtil videre.
Avatar billede mercutio Nybegynder
17. september 2004 - 00:04 #18
kan jeg få et svar?
Avatar billede burningice Nybegynder
17. september 2004 - 14:27 #19
:) svar
Avatar billede burningice Nybegynder
17. september 2004 - 14:27 #20
ooops O:)
Avatar billede mercutio Nybegynder
17. september 2004 - 15:05 #21
Tak for det =)
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
Kategori
Kurser inden for grundlæggende programmering

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