You can use this application to check the availability of
URL are there are not it can be used as the BVT test for your application.
There is the simple application you can create which will
give the result of status of all URL for your application. It will give the Result
as status code with URL.
Application will be look like Below;
XML Format of the URL should be like below for Check url
availability;
<?xmlversion ="1.0"encoding="utf-8"?>
<urls>
<url>https://support.microsoft.com/</url>
<url>https://support.microsoft.com/mscomcloud/header.aspx</url>
</urls>
In application we are using the BackgroundProcess control
which will display the result time to time in textbox along with the process
count.
Using the OpenDialngbox control to select the file “XML”
Code snippet for it as.
Initializing
the Worker Process inform Event as:
public Form1()
{
InitializeComponent();
bgw =
new BackgroundWorker();
bgw.WorkerReportsProgress = true;
bgw.ProgressChanged += new ProgressChangedEventHandler(bgw_ProgressChanged);
bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_RunWorkerCompleted);
bgw.DoWork += new DoWorkEventHandler(bgw_DoWork);
}
Code to save result in the file status of url availability
private void btnSave_Click(object sender, EventArgs e)
{
SaveFile();
}
private void SaveFile()
{
if (backgroundWorker1.IsBusy != true)
{
saveFilePath = string.Empty;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
// saveFileDialog1.Filter
= "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
saveFileDialog1.Title = "Save
txt File";
saveFileDialog1.Filter = "Txt
Files|*.txt";
saveFileDialog1.ShowDialog();
saveFilePath = saveFileDialog1.FileName;
if (saveFilePath != "")
{
// Start the asynchronous
operation.
bgw.RunWorkerAsync();
}
else
{
MessageBox.Show("No selected File Find");
}
}
}
1. BackgroundWorker process work will main
code of application void bgw_DoWork
2. Track the process from void bgw_ProgressChanged
3. Once worker process completed void bgw_RunWorkerCompleted
Full code Snippet for
application is
using System;
using
System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Threading;
using
System.Threading.Tasks;
using
System.Windows.Forms;
using System.Xml.Linq;
namespace URLTest
{
public partial class Form1 : Form
{
BackgroundWorker bgw;
string str200 = string.Empty;
string strStatus = string.Empty;
string progress = string.Empty;
string FilePath = string.Empty;
string strResult = string.Empty;
string saveFilePath = string.Empty;
int Count200 = 1;
int CountOthers = 1;
System.IO.StreamWriter file;
public Form1()
{
InitializeComponent();
bgw =
new BackgroundWorker();
bgw.WorkerReportsProgress = true;
bgw.ProgressChanged += new ProgressChangedEventHandler(bgw_ProgressChanged);
bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_RunWorkerCompleted);
bgw.DoWork += new DoWorkEventHandler(bgw_DoWork);
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
SaveFile();
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void SaveFile()
{
if (backgroundWorker1.IsBusy != true)
{
saveFilePath = string.Empty;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
//
saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif
Image|*.gif";
saveFileDialog1.Title = "Save
txt File";
saveFileDialog1.Filter = "Txt
Files|*.txt";
saveFileDialog1.ShowDialog();
saveFilePath = saveFileDialog1.FileName;
if (saveFilePath != "")
{
// Start the asynchronous
operation.
bgw.RunWorkerAsync();
}
else
{
MessageBox.Show("No selected File Find");
}
}
}
void bgw_DoWork(object sender, DoWorkEventArgs e)
{
if (FilePath != string.Empty)
{
file = new System.IO.StreamWriter(saveFilePath);
var execPath = AppDomain.CurrentDomain.BaseDirectory;
var baseDi1r = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
var baseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
XDocument doc = XDocument.Load(FilePath);
var Urls = doc.Descendants("url");
//
System.IO.StreamWriter file = new
System.IO.StreamWriter("C:\\URLTest\\result.txt");
int count = 0;
// string str = string.Empty;
foreach (var url in Urls)
{
progress = url.Value;
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url.Value);
WebReq.Method = "GET";
try
{
using (HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse())
{
int code = (int)WebResp.StatusCode;
if (code == 200)
{
str200 += Count200.ToString() + "-
url = " + url.Value + "
Status = " + code + "\r\n";
Count200++;
}
else
{
strOthers += CountOthers.ToString() + "- url = " + url.Value + "
Status = " + code + "\r\n";
CountOthers++;
}
strResult += "url = " + url.Value + "
Status = " + code + "\r\n";
// file.WriteLine("url =
" + url.Value + " Response = " + code);
}
}
catch (WebException ex)
{
using (HttpWebResponse res = (HttpWebResponse)ex.Response)
{
int code = (int)res.StatusCode;
//
file.WriteLine("url = " + url.Value + " Response = " +
code);
strOthers += CountOthers.ToString() +
"-
url = " + url.Value + "
Status = " + code + "\r\n";
strResult = "url = " + url.Value + "
Status = " + code + "\r\n";
CountOthers++;
}
}
count++;
bgw.ReportProgress(count);
Thread.Sleep(2000);
}
file.Close();
file.Dispose();
}
else
{
MessageBox.Show("Please select file");
}
}
void bgw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
lblTotalCount.Text = "Total
URL Analysis Completed: " + e.ProgressPercentage.ToString().Split('|')[0];
txtResult.Text = str200;
txtStatus.Text = strOthers;
file.WriteLine(strResult);
lblProgress.Text = progress + "...";
}
void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("Completed
Application !!");
}
private void button3_Click(object sender, EventArgs e)
{
if (bgw.IsBusy != true)
{
this.openFileDialog1.Filter = "Xml Files|*.xml";
// Allow the user to select
multiple images.
this.openFileDialog1.Multiselect = true;
this.openFileDialog1.Title = "Select XML";
openFileDialog1.ShowDialog();
List<string> strCollection =
new List<string>();
foreach (String
file in openFileDialog1.FileNames)
{
strCollection.Add(file);
}
if(strCollection.Count > 0)
{
FilePath = strCollection.FirstOrDefault();
}
}
}
}
}
Output screen will be;
No comments:
Post a Comment