using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Net;using System.Net.Cache;namespace HTTP_Request_tool{ public partial class Form1 : Form { private EncodingInfo[] _Encodings = null;// 编码集合. private Encoding _ResEncoding = null;// 回应的编码. public Form1() { InitializeComponent(); } public static Encoding Encoding_FromBodyName(string bodyname) { if (string.IsNullOrEmpty(bodyname)) return null; try { foreach (EncodingInfo ei in Encoding.GetEncodings()) { Encoding e = ei.GetEncoding(); if (0 == string.Compare(bodyname, e.BodyName, true)) { return e; } } } catch { } return null; } private void OutLog(string s) { txtLog.AppendText(s Environment.NewLine); txtLog.ScrollToCaret(); } private void OutLog(string format, params object[] args) { OutLog(string.Format(format, args)); } private void Form1_Load(object sender, EventArgs e) { // Http方法 cboMode.SelectedIndex = 0;// GET // 回应的编码 _Encodings = Encoding.GetEncodings(); _ResEncoding = Encoding.UTF8; } private void btnGo_Click(object sender, EventArgs e) { //httpConn.setRequestProperty("Content-length", "" data.length); //httpConn.setRequestProperty("Content-Type","application/octet-stream"); //httpConn.setRequestProperty("Connection", "Keep-Alive"); //httpConn.setRequestProperty("Charset", "UTF-8"); Encoding myEncoding = Encoding.UTF8; string sMode = (string)cboMode.SelectedItem; string sUrl = comboBox1.Text comboBox2.Text comboBox3.Text comboBox4.Text; string sPostData = txtPostData.Text; string sContentType = "application/x-www-form-urlencoded"; HttpWebRequest req; // Log Length if (txtLog.Lines.Length > 3000) txtLog.Clear(); // == main == OutLog(string.Format("{2}: {0} {1}", sMode, sUrl, DateTime.Now.ToString("g"))); try { // init req = HttpWebRequest.Create(sUrl) as HttpWebRequest; req.Method = sMode; req.Accept = "*/*"; req.KeepAlive = false; req.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore); if (0 == string.Compare("POST", sMode)) { byte[] bufPost = myEncoding.GetBytes(sPostData); req.ContentType = sContentType; req.ContentLength = bufPost.Length; Stream newStream = req.GetRequestStream(); newStream.Write(bufPost, 0, bufPost.Length); newStream.Close(); } // Response HttpWebResponse res = req.GetResponse() as HttpWebResponse; try { OutLog("Response.ContentLength:\t{0}", res.ContentLength); OutLog("Response.ContentType:\t{0}", res.ContentType); OutLog("Response.CharacterSet:\t{0}", res.CharacterSet); OutLog("Response.ContentEncoding:\t{0}", res.ContentEncoding); OutLog("Response.IsFromCache:\t{0}", res.IsFromCache); OutLog("Response.IsMutuallyAuthenticated:\t{0}", res.IsMutuallyAuthenticated); OutLog("Response.LastModified:\t{0}", res.LastModified); OutLog("Response.ProtocolVersion:\t{0}", res.ProtocolVersion); OutLog("Response.ResponseUri:\t{0}", res.ResponseUri); OutLog("Response.Server:\t{0}", res.Server); OutLog("Response.StatusCode:\t{0}\t# {1}", res.StatusCode, (int)res.StatusCode); OutLog("Response.StatusDescription:\t{0}", res.StatusDescription); // header OutLog(".\t#Header:");// 头. for (int i = 0; i < res.Headers.Count; i) { OutLog("[{2}] {0}:\t{1}", res.Headers.Keys[i], res.Headers[i], i); } // 找到合适的编码 Encoding encoding = null; //encoding = Encoding_FromBodyName(res.CharacterSet);// 后来发现主体部分的字符集与Response.CharacterSet不同. //if (null == encoding) encoding = myEncoding; encoding = _ResEncoding; System.Diagnostics.Debug.WriteLine(encoding); // body OutLog(".\t#Body:");// 主体. using (Stream resStream = res.GetResponseStream()) { using (StreamReader resStreamReader = new StreamReader(resStream, encoding)) { OutLog(resStreamReader.ReadToEnd()); } } OutLog(".\t#OK.");// 成功. } finally { res.Close(); } } catch (Exception ex) { OutLog(ex.ToString()); } OutLog(string.Empty); } private void comboBox4_Leave(object sender, EventArgs e) { comboBox4.Items.Add(comboBox4.Text); } private void button2_Click(object sender, EventArgs e) { // "保存为"对话框 SaveFileDialog dialog = new SaveFileDialog(); dialog.Filter = "文本文件|*.txt"; // 显示对话框 if (dialog.ShowDialog() == DialogResult.OK) { // 文件名 string fileName = dialog.FileName; // 创建文件,准备写入 FileStream fs = File.Open(fileName, FileMode.Create, FileAccess.Write); StreamWriter wr = new StreamWriter(fs); // 逐行将textBox1的内容写入到文件中 foreach (string line in txtLog.Lines) { wr.WriteLine(line); } // 关闭文件 wr.Flush(); wr.Close(); fs.Close(); } } private void button1_Click(object sender, EventArgs e) { txtLog.Text = ""; } }}
评论