27. februar 2004 - 16:13Der 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.
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
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"
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Net; using System.IO;
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;
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);
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.
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.