none
请如如何让TcpClient通过代理来访问? RRS feed

  • 问题

  • 我的要求很简单,只是想让  TcpClient通过代理来取得一个网页(如http://www.126.com)的内容

    其中有代这样的代码,如何修改这段代码,让其可以通过代理服务器来访问URL呢?

            ///<summary>
            ///向服务器发送请求
            ///</summary>
            ///<param name="URL">请求地址</param>
            ///<param name="method">POST或GET</param>
            ///<param name="showProgress">是否显示上传进度</param>
            private void SendRequestData(string URL, string method, bool
    showProgress)
            {
                clientSocket = new TcpClient();
                Uri URI = new Uri(URL);
                clientSocket.Connect(URI.Host, URI.Port);

                requestHeaders.Add("Host", URI.Host);
                byte[] request = GetRequestHeaders(method + " " +
    URI.PathAndQuery + " HTTP/1.1");
                clientSocket.Client.Send(request);
                //......
            }


    因为这个客户端是在局域网内部使用.请如如何让TcpClient通过代理来访问?


    请帮帮我~~

    2009年9月18日 1:53

答案

  • 你好 为什么要用TCPClient呢?
    建议直接采用HttpWebRequest类就可以了,它的属性Proxy可以设置代理

    HttpWebRequest myWebRequest=(HttpWebRequest)WebRequest.Create("http://www.microsoft.com");
    WebProxy myProxy=new WebProxy();
    // Obtain the 'Proxy' of the  Default browser. 
    myProxy=(WebProxy)myWebRequest.Proxy;

    。。。。

     Uri newUri=new Uri(proxyAddress);
            // Associate the newUri object to 'myProxy' object so that new myProxy settings can be set.
            myProxy.Address=newUri;
            // Create a NetworkCredential object and associate it with the Proxy property of request object.
            myProxy.Credentials=new NetworkCredential(username,password);
            myWebRequest.Proxy=myProxy;


    参考 http://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest.proxy(VS.80).aspx

    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年9月18日 5:25
    版主
  • 你好!
         可以参考这个实现,希望对你有帮助:
    http://www.cnblogs.com/wenti/archive/2009/07/16/1524670.html
    周雪峰
    2009年9月18日 5:44
    版主

全部回复

  • 你好 为什么要用TCPClient呢?
    建议直接采用HttpWebRequest类就可以了,它的属性Proxy可以设置代理

    HttpWebRequest myWebRequest=(HttpWebRequest)WebRequest.Create("http://www.microsoft.com");
    WebProxy myProxy=new WebProxy();
    // Obtain the 'Proxy' of the  Default browser. 
    myProxy=(WebProxy)myWebRequest.Proxy;

    。。。。

     Uri newUri=new Uri(proxyAddress);
            // Associate the newUri object to 'myProxy' object so that new myProxy settings can be set.
            myProxy.Address=newUri;
            // Create a NetworkCredential object and associate it with the Proxy property of request object.
            myProxy.Credentials=new NetworkCredential(username,password);
            myWebRequest.Proxy=myProxy;


    参考 http://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest.proxy(VS.80).aspx

    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年9月18日 5:25
    版主
  • 你好!
         可以参考这个实现,希望对你有帮助:
    http://www.cnblogs.com/wenti/archive/2009/07/16/1524670.html
    周雪峰
    2009年9月18日 5:44
    版主