我需要为我正在编写的一些测试创建 Http POST 请求和一些 GET 请求作为字符串。目前,我的测试使用 StringBuilder 构建它们,并且从 fiddler 中提取的硬编码 POST 请求有点像这样:
var builder = new StringBuilder();
builder.Append("POST https://some.web.pg HTTP/1.1\r\n");
builder.Append("Content-Type: application/x-www-form-urlencoded\r\n");
builder.Append("Referer: https://some.referer.com\r\n");
builder.Append("Accept-Language: en-us\r\n");
builder.Append("Accept-Encoding: gzip, deflate\r\n");
builder.Append("User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)\r\n");
builder.Append("Host: login.yahoo.com\r\n");
// ... other header info
builder.Append("\r\n");
builder.Append("post body......\r\n");
var postData = builder.ToString();
这很快使我的测试变得混乱,并且希望有一种更简洁的方式来构建这些 POST 请求。我一直在研究 HttpWebRequest 类,希望它可以为我创建这些。我认为,它必须有某种方式来构建这个我试图以某种形式创建的确切请求。但可惜的是,GetRequestStream 是一个只可写的流。
有没有办法读取 HttpWebRequest 将生成的请求流(然后将其更改为字符串)?甚至任何关于如何生成这些 POST 请求的想法都可以。