Csharp/C Sharp/Network/Web Client
Содержание
- 1 Access the Internet
- 2 Basic WebClient
- 3 Displays the resource specified
- 4 Download Data Test
- 5 Download File Test
- 6 Examine the headers
- 7 Handle network exceptions
- 8 My Web Client
- 9 NetworkCredential Cache Test
- 10 NetworkCredential test
- 11 Reading Web Pages
- 12 Save web page from HttpWebResponse
- 13 Use LastModified
- 14 Use WebClient to download information into a file
- 15 Web Client Open Read Test
- 16 Web Client Open Write Test
- 17 Web Client Response Headers Test
- 18 Web Client Upload Data Test 2
- 19 Web Client Upload Values Test
- 20 Web Get
Access the Internet
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Access the Internet.
using System;
using System.Net;
using System.IO;
public class NetDemo {
public static void Main() {
int ch;
// First, create a WebRequest to a URI.
HttpWebRequest req = (HttpWebRequest)
WebRequest.Create("http://www.nfex.ru");
// Next, send that request and return the response.
HttpWebResponse resp = (HttpWebResponse)
req.GetResponse();
// From the response, obtain an input stream.
Stream istrm = resp.GetResponseStream();
/* Now, read and display the html present at
the specified URI. So you can see what is
being displayed, the data is shown
400 characters at a time. After each 400
characters are displayed, you must press
ENTER to get the next 400. */
for(int i=1; ; i++) {
ch = istrm.ReadByte();
if(ch == -1) break;
Console.Write((char) ch);
if((i%400)==0) {
Console.Write("\nPress a key.");
Console.Read();
}
}
// Close the Response. This also closes istrm.
resp.Close();
}
}
Basic WebClient
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
public class MainClass {
public static void Main() {
System.Net.WebClient Client = new WebClient();
Stream strm = Client.OpenRead("http://www.reuters.ru");
StreamReader sr = new StreamReader(strm);
string line;
while ((line = sr.ReadLine()) != null) {
Console.WriteLine(line);
}
strm.Close();
}
}
Displays the resource specified
using System;
using System.IO;
using System.Net;
public class TryURL {
public static void Main(String [] args) {
WebClient client = new WebClient();
client.BaseAddress = "http://www.nfex.ru";
client.DownloadFile("www.nfex.ru", "index.htm");
StreamReader input =new StreamReader(client.OpenRead("index.htm"));
Console.WriteLine(input.ReadToEnd());
Console.WriteLine
("Request header count: {0}", client.Headers.Count);
WebHeaderCollection header = client.ResponseHeaders;
Console.WriteLine
("Response header count: {0}", header.Count);
for (int i = 0; i < header.Count; i++)
Console.WriteLine(" {0} : {1}",
header.GetKey(i), header[i]);
input.Close();
}
}
Download Data Test
using System;
using System.Net;
using System.Text;
public class DownloadDataTest
{
public static void Main(string[] argv)
{
WebClient wc = new WebClient();
byte[] response = wc.DownloadData(argv[0]);
Console.WriteLine(Encoding.ASCII.GetString(response));
}
}
Download File Test
using System;
using System.Net;
public class DownloadFileTest
{
public static void Main(string[] argv)
{
WebClient wc = new WebClient();
string filename = "webpage.htm";
wc.DownloadFile(argv[0], filename);
Console.WriteLine("file downloaded");
}
}
Examine the headers
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Examine the headers.
using System;
using System.Net;
public class HeaderDemo {
public static void Main() {
// Create a WebRequest to a URI.
HttpWebRequest req = (HttpWebRequest)
WebRequest.Create("http://www.osborne.ru");
// Send that request and return the response.
HttpWebResponse resp = (HttpWebResponse)
req.GetResponse();
// Obtain a list of the names.
string[] names = resp.Headers.AllKeys;
// Display the header name/value pairs.
Console.WriteLine("{0,-20}{1}\n", "Name", "Value");
foreach(string n in names)
Console.WriteLine("{0,-20}{1}", n, resp.Headers[n]);
// Close the Response.
resp.Close();
}
}
Handle network exceptions
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Handle network exceptions.
using System;
using System.Net;
using System.IO;
public class NetExcDemo {
public static void Main() {
int ch;
try {
// First, create a WebRequest to a URI.
HttpWebRequest req = (HttpWebRequest)
WebRequest.Create("http://www.osborne.ru");
// Next, send that request and return the response.
HttpWebResponse resp = (HttpWebResponse)
req.GetResponse();
// From the response, obtain an input stream.
Stream istrm = resp.GetResponseStream();
/* Now, read and display the html present at
the specified URI. So you can see what is
being displayed, the data is shown
400 characters at a time. After each 400
characters are displayed, you must press
ENTER to get the next 400. */
for(int i=1; ; i++) {
ch = istrm.ReadByte();
if(ch == -1) break;
Console.Write((char) ch);
if((i%400)==0) {
Console.Write("\nPress a key.");
Console.Read();
}
}
// Close the Response. This also closes istrm.
resp.Close();
} catch(WebException exc) {
Console.WriteLine("Network Error: " + exc.Message +
"\nStatus code: " + exc.Status);
} catch(ProtocolViolationException exc) {
Console.WriteLine("Protocol Error: " + exc.Message);
} catch(UriFormatException exc) {
Console.WriteLine("URI Format Error: " + exc.Message);
} catch(NotSupportedException exc) {
Console.WriteLine("Unknown Protocol: " + exc.Message);
} catch(IOException exc) {
Console.WriteLine("I/O Error: " + exc.Message);
}
}
}
My Web Client
/*
* C# Programmers Pocket Consultant
* Author: Gregory S. MacBeth
* Email: gmacbeth@comporium.net
* Create Date: June 27, 2003
* Last Modified Date:
* Version: 1
*/
using System;
using System.Net;
using System.Text;
using System.IO;
namespace Client.Chapter_14___Networking_and_WWW
{
public class MyWebClient
{
[STAThread]
static void Main(string[] args)
{
WebClient MyClient = new WebClient();
Stream MyStream = MyClient.OpenRead("http://www.nfex.ru.ru");
StreamReader MyReader = new StreamReader(MyStream);
Console.WriteLine(MyReader.ReadLine());
MyStream.Close();
}
}
}
NetworkCredential Cache Test
/*
C# Network Programming
by Richard Blum
Publisher: Sybex
ISBN: 0782141765
*/
using System;
using System.Net;
using System.Text;
public class CredCacheTest
{
public static void Main()
{
WebClient wc = new WebClient();
string website1 = "http://remote1.ispnet.net";
string website2 = "http://remote2.ispnet.net";
string website3 = "http://remote3.ispnet.net/login";
NetworkCredential nc1 = new NetworkCredential("mike", "guitars");
NetworkCredential nc2 = new NetworkCredential("evonne", "singing", "home");
NetworkCredential nc3 = new NetworkCredential("alex", "drums");
CredentialCache cc = new CredentialCache();
cc.Add(new Uri(website1), "Basic", nc1);
cc.Add(new Uri(website2), "Basic", nc2);
cc.Add(new Uri(website3), "Digest", nc3);
wc.Credentials = cc;
wc.DownloadFile(website1, "website1.htm");
wc.DownloadFile(website2, "website2.htm");
wc.DownloadFile(website3, "website3.htm");
}
}
NetworkCredential test
using System;
using System.Net;
using System.Text;
public class CredTest
{
public static void Main()
{
WebClient wc = new WebClient();
NetworkCredential nc = new NetworkCredential("alex", "mypassword");
wc.Credentials = nc;
byte[] response = wc.DownloadData("http://www.nfex.ru/index.htm");
Console.WriteLine(Encoding.ASCII.GetString(response));
}
}
Reading Web Pages
/*
A Programmer"s Introduction to C# (Second Edition)
by Eric Gunnerson
Publisher: Apress L.P.
ISBN: 1-893115-62-3
*/
// 32 - .NET Frameworks Overview\Reading Web Pages
// copyright 2000 Eric Gunnerson
using System;
using System.Net;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
class QuoteFetch
{
public QuoteFetch(string symbol)
{
this.symbol = symbol;
}
public string Last
{
get
{
string url = "http://moneycentral.msn.ru/scripts/webquote.dll?ipage=qd&Symbol=";
url += symbol;
ExtractQuote(ReadUrl(url));
return(last);
}
}
string ReadUrl(string url)
{
Uri uri = new Uri(url);
//Create the request object
WebRequest req = WebRequest.Create(uri);
WebResponse resp = req.GetResponse();
Stream stream = resp.GetResponseStream();
StreamReader sr = new StreamReader(stream);
string s = sr.ReadToEnd();
return(s);
}
void ExtractQuote(string s)
{
// Line like: "Last</TD><TD ALIGN=RIGHT NOWRAP><B> 78 3/16"
Regex lastmatch = new Regex(@"Last\D+(?<last>.+)<\/B>");
last = lastmatch.Match(s).Groups[1].ToString();
}
string symbol;
string last;
}
public class ReadingWebPages
{
public static void Main(string[] args)
{
if (args.Length != 1)
Console.WriteLine("Quote <symbol>");
else
{
// GlobalProxySelection.Select = new DefaultControlObject("proxy", 80);
QuoteFetch q = new QuoteFetch(args[0]);
Console.WriteLine("{0} = {1}", args[0], q.Last);
}
}
}
Save web page from HttpWebResponse
using System;
using System.Net;
using System.IO;
public class WebApp {
public static void Main() {
String page = "http://www.yoursite.net/index.html";
HttpWebRequest site = (HttpWebRequest)WebRequest.Create(page);
HttpWebResponse response =(HttpWebResponse)site.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader read = new StreamReader(dataStream);
String data = read.ReadToEnd();
Console.WriteLine(data);
}
}
Use LastModified
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Use LastModified.
using System;
using System.Net;
public class HeaderDemo12 {
public static void Main() {
HttpWebRequest req = (HttpWebRequest)
WebRequest.Create("http://www.Microsoft.ru");
HttpWebResponse resp = (HttpWebResponse)
req.GetResponse();
Console.WriteLine("Last modified: " + resp.LastModified);
resp.Close();
}
}
Use WebClient to download information into a file
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Use WebClient to download information into a file.
using System;
using System.Net;
using System.IO;
public class WebClientDemo {
public static void Main() {
WebClient user = new WebClient();
string uri = "http://www.nfex.ru";
string fname = "data.txt";
try {
Console.WriteLine("Downloading data from " +
uri + " to " + fname);
user.DownloadFile(uri, fname);
} catch (WebException exc) {
Console.WriteLine(exc);
} catch (UriFormatException exc) {
Console.WriteLine(exc);
}
Console.WriteLine("Download complete.");
}
}
Web Client Open Read Test
using System;
using System.IO;
using System.Net;
public class OpenReadTest
{
public static void Main(string[] argv)
{
WebClient wc = new WebClient();
string response;
Stream strm = wc.OpenRead(argv[0]);
StreamReader sr = new StreamReader(strm);
while(sr.Peek() > -1)
{
response = sr.ReadLine();
Console.WriteLine(response);
}
sr.Close();
}
}
Web Client Open Write Test
using System;
using System.IO;
using System.Net;
public class OpenWriteTest
{
public static void Main(string[] argv)
{
WebClient wc = new WebClient();
string data = "Data up upload to server";
Stream strm = wc.OpenWrite(argv[0]);
StreamWriter sw = new StreamWriter(strm);
sw.WriteLine(data);
sw.Close();
strm.Close();
}
}
Web Client Response Headers Test
using System;
using System.Collections.Specialized;
using System.Net;
public class ResponseHeadersTest
{
public static void Main(string[] argv)
{
WebClient wc = new WebClient();
byte[] response = wc.DownloadData(argv[0]);
WebHeaderCollection whc = wc.ResponseHeaders;
Console.WriteLine("header count = {0}", whc.Count);
for (int i = 0; i < whc.Count; i++)
{
Console.WriteLine(whc.GetKey(i) + " = " + whc.Get(i));
}
}
}
Web Client Upload Data Test 2
using System;
using System.Net;
using System.Text;
public class UploadDataTest
{
public static void Main(string[] argv)
{
WebClient wc = new WebClient();
string data = "This is the data to post";
byte[] dataarray = Encoding.ASCII.GetBytes(data);
wc.UploadData(argv[0], dataarray);
}
}
Web Client Upload Values Test
using System;
using System.Collections.Specialized;
using System.Net;
using System.Text;
public class UploadValuesTest
{
public static void Main(string[] argv)
{
WebClient wc = new WebClient();
string uri = "http://localhost/testform.aspx";
NameValueCollection nvc = new NameValueCollection();
nvc.Add("lastname", "Blum");
nvc.Add("firstname", "Rich");
byte[] response = wc.UploadValues(uri, nvc);
Console.WriteLine(Encoding.ASCII.GetString(response));
}
}
Web Get
/*
C# Network Programming
by Richard Blum
Publisher: Sybex
ISBN: 0782141765
*/
using System;
using System.Drawing;
using System.IO;
using System.Net;
using System.Windows.Forms;
public class WebGet : Form
{
private TextBox uribox;
private ListBox headers;
private ListBox cookies;
private ListBox response;
public WebGet()
{
Text = "WebGet - a web page retriever";
Size = new Size(500, 450);
Label label1 = new Label();
label1.Parent = this;
label1.Text = "URI:";
label1.AutoSize = true;
label1.Location = new Point(10, 23);
uribox = new TextBox();
uribox.Parent = this;
uribox.Size = new Size(200, 2 * Font.Height);
uribox.Location = new Point(35, 20);
Label label2 = new Label();
label2.Parent = this;
label2.Text = "Headers:";
label2.AutoSize = true;
label2.Location = new Point(10, 46);
headers = new ListBox();
headers.Parent = this;
headers.HorizontalScrollbar = true;
headers.Location = new Point(10, 65);
headers.Size = new Size(450, 6 * Font.Height);
Label label3 = new Label();
label3.Parent = this;
label3.Text = "Cookies:";
label3.AutoSize = true;
label3.Location = new Point(10, 70 + 6 * Font.Height);
cookies = new ListBox();
cookies.Parent = this;
cookies.HorizontalScrollbar = true;
cookies.Location = new Point(10, 70 + 7 * Font.Height);
cookies.Size = new Size(450, 6 * Font.Height);
Label label4 = new Label();
label4.Parent = this;
label4.Text = "HTML:";
label4.AutoSize = true;
label4.Location = new Point(10, 70 + 13 * Font.Height);
response = new ListBox();
response.Parent = this;
response.HorizontalScrollbar = true;
response.Location = new Point(10, 70 + 14 * Font.Height);
response.Size = new Size(450, 12 * Font.Height);
Button sendit = new Button();
sendit.Parent = this;
sendit.Text = "GetIt";
sendit.Location = new Point(275, 18);
sendit.Size = new Size(7 * Font.Height, 2 * Font.Height);
sendit.Click += new EventHandler(ButtongetitOnClick);
}
void ButtongetitOnClick(object obj, EventArgs ea)
{
headers.Items.Clear();
cookies.Items.Clear();
response.Items.Clear();
HttpWebRequest hwr = (HttpWebRequest)WebRequest.Create(uribox.Text);
hwr.CookieContainer = new CookieContainer();
HttpWebResponse hwrsp = (HttpWebResponse)hwr.GetResponse();
WebHeaderCollection whc = hwrsp.Headers;
for (int i = 0; i < whc.Count; i++)
{
headers.Items.Add(whc.GetKey(i) + " = " + whc.Get(i));
}
hwrsp.Cookies = hwr.CookieContainer.GetCookies(hwr.RequestUri);
foreach(Cookie cky in hwrsp.Cookies)
{
cookies.Items.Add(cky.Name + " = " + cky.Value);
}
Stream strm = hwrsp.GetResponseStream();
StreamReader sr = new StreamReader(strm);
while (sr.Peek() > -1)
{
response.Items.Add(sr.ReadLine());
}
sr.Close();
strm.Close();
}
public static void Main()
{
Application.Run(new WebGet());
}
}