给梦一个奔跑的方向!
PDF Print E-mail
User Rating: / 1
PoorBest 
Written by xlingfairy
Sunday, 13 June 2010 11:12
这个网站有点怪www.pharmacyexpress.com,首页 Response status 是 404 ,但是返回内容正常.这样的话,用 HttpWebRequest 或 WebRequest 就取不到它的内容,因为 404 是个错误.
 
这种情况下,第一反应用就是用 Tcp 来做,但是刚开始就犯了个错,纠结于TcpClient 的异步请求上,搞了半天,也没有从 tcp 取出一丁点数据来.
 
后来猛然发现,我只是建立了 tcp 连接,而没有告诉 服务器 我要做什么...难怪没有返回任何数据.真是汗颜啊...
 
怎么告诉服务器我要请求它的网页呢?当然用 Http Request Header 啊!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;
 
namespace Pharmacyexpress {
    class Program {
        private static MemoryStream msm = new MemoryStream();
        private static byte[] bytes = new byte[1024];
        static void Main(string[] args) {
            TcpClient tcp = new TcpClient("www.pharmacyexpress.com", 80);
            if (tcp != null) {
                NetworkStream nst = tcp.GetStream();
                MemoryStream msm = new MemoryStream();
                StreamWriter sw = new StreamWriter(msm);
                string header = "GET / HTTP/1.1\r\nAccept: */*\r\nHost: www.pharmacyexpress.com\r\n\r\n";
                byte[] _header = Encoding.UTF8.GetBytes(header);
                nst.Write(_header, 0, _header.Length);
                
                
                nst.BeginRead(bytes, 0, bytes.Length, new AsyncCallback(Get), nst);
            }
            Console.Read();
        }
 
        private static void Get(IAsyncResult result) {
            NetworkStream nst = (NetworkStream)result.AsyncState;
            int len = nst.EndRead(result);
            if (len == 0) {
                msm.Position = 0;
                StreamReader sr = new StreamReader(msm);
                string ctx = sr.ReadToEnd();
                return;
            }
            msm.Write(bytes, 0, len);
            nst.BeginRead(bytes, 0, bytes.Length, new AsyncCallback(Get), nst);
        }
    }
}
 
关于如何请求 https (443) 的, 可以参考:
SslStream
Last Updated ( Sunday, 13 June 2010 11:18 )
 

Add comment


Security code
Refresh

Popular Contents

Recommend

Site Info

Members : 1
Content : 140
Web Links : 7
Content View Hits : 111310

Links