.Net網(wǎng)頁(yè)轉(zhuǎn)發(fā)工具

用法
http://localhost:端口號(hào)/轉(zhuǎn)發(fā)網(wǎng)址

        private static string port = "";
        private static HttpListener httpListener;
        static void Main(string[] args)
        {
            if (args.Length > 0)
            {
                port = args[1];
            }
            else
            {
                Console.WriteLine("請(qǐng)輸入訪問(wèn)端口:");
                port = Console.ReadLine();
            }
            Console.WriteLine($"返回端口:{port}");
            Start();
            Console.ReadLine();
        }


        private static void Start()
        {
            try
            {
                Program.httpListener = new HttpListener();
                Program.httpListener.Prefixes.Add("http://+:" + Program.port + "/");
                Program.httpListener.Start();
                Program.httpListener.BeginGetContext(new AsyncCallback(Program.Result), (object)null);
                Console.WriteLine("啟動(dòng)成功");
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("啟動(dòng)失敗:" + ex.ToString());
            }
        }

        private static void Result(IAsyncResult ar)
        {
            Program.httpListener.BeginGetContext(new AsyncCallback(Program.Result), (object)null);
            HttpListenerContext context = Program.httpListener.EndGetContext(ar);
            HttpListenerRequest request = context.Request;
            HttpListenerResponse response = context.Response;
            context.Response.ContentType = "text/plain;charset=UTF-8";
            context.Response.AddHeader("Content-type", "text/plain");
            context.Response.ContentEncoding = Encoding.UTF8;
            byte[] bytes = Encoding.UTF8.GetBytes(Program.HandleRequest(request, response));
            try
            {
                using (Stream outputStream = response.OutputStream)
                    outputStream.Write(bytes, 0, bytes.Length);
            }
            catch (Exception ex)
            {
                Console.WriteLine("網(wǎng)絡(luò)蹦了:" + ex.ToString());
            }
        }

        private static string HandleRequest(HttpListenerRequest request, HttpListenerResponse response)
        {
            try
            {
                string str = "http:/" + request.RawUrl;
                Console.WriteLine("用戶發(fā)起【" + request.HttpMethod + "】" + request.Url.ToString() + "代理地址至" + str);
                if (request.HttpMethod == "POST")
                {
                    List<byte> byteList = new List<byte>();
                    byte[] buffer = new byte[2048];
                    int count = 0;
                    int num;
                    do
                    {
                        num = request.InputStream.Read(buffer, 0, buffer.Length);
                        count += num;
                        byteList.AddRange((IEnumerable<byte>)buffer);
                    }
                    while (num != 0);
                    string query = Encoding.UTF8.GetString(byteList.ToArray(), 0, count);
                    Console.WriteLine("提交數(shù)據(jù):" + query);
                    using (HttpClient httpClient = new HttpClient())
                    {
                        httpClient.BaseAddress = new Uri(str);
                        Dictionary<string, string> dictionary = new Dictionary<string, string>();
                        NameValueCollection queryString = HttpUtility.ParseQueryString(query);
                        foreach (string allKey in queryString.AllKeys)
                            dictionary.Add(allKey, queryString[allKey]);
                        HttpContent content = (HttpContent)new FormUrlEncodedContent((IEnumerable<KeyValuePair<string, string>>)dictionary);
                        string result = httpClient.PostAsync(str, content).Result.Content.ReadAsStringAsync().Result;
                        Console.WriteLine("Body:" + result);
                        return result;
                    }
                }
                else
                {
                    using (HttpClient httpClient = new HttpClient())
                    {
                        httpClient.BaseAddress = new Uri(str);
                        string result = httpClient.GetAsync(str).Result.Content.ReadAsStringAsync().Result;
                        Console.WriteLine("Body:" + result);
                        return result;
                    }
                }
            }
            catch (Exception ex)
            {
                response.StatusDescription = "404";
                response.StatusCode = 404;
                return "在接收數(shù)據(jù)時(shí)發(fā)生錯(cuò)誤:" + ex.ToString();
            }
        }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市枫笛,隨后出現(xiàn)的幾起案子矾缓,更是在濱河造成了極大的恐慌望忆,老刑警劉巖浅妆,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件变秦,死亡現(xiàn)場(chǎng)離奇詭異穿仪,居然都是意外死亡席爽,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門啊片,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)只锻,“玉大人,你說(shuō)我怎么就攤上這事紫谷∑胍” “怎么了捐寥?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)祖驱。 經(jīng)常有香客問(wèn)我握恳,道長(zhǎng),這世上最難降的妖魔是什么捺僻? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任乡洼,我火速辦了婚禮,結(jié)果婚禮上匕坯,老公的妹妹穿的比我還像新娘束昵。我一直安慰自己,他們只是感情好醒颖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布妻怎。 她就那樣靜靜地躺著,像睡著了一般泞歉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上匿辩,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天腰耙,我揣著相機(jī)與錄音,去河邊找鬼铲球。 笑死挺庞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的稼病。 我是一名探鬼主播选侨,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼然走!你這毒婦竟也來(lái)了援制?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤芍瑞,失蹤者是張志新(化名)和其女友劉穎晨仑,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拆檬,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洪己,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了竟贯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片答捕。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖屑那,靈堂內(nèi)的尸體忽然破棺而出拱镐,到底是詐尸還是另有隱情艘款,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布痢站,位于F島的核電站磷箕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏阵难。R本人自食惡果不足惜岳枷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呜叫。 院中可真熱鬧空繁,春花似錦、人聲如沸朱庆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)娱颊。三九已至傲诵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間箱硕,已是汗流浹背拴竹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留剧罩,地道東北人栓拜。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像惠昔,于是被迫代替她去往敵國(guó)和親幕与。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容