这是我发疯,我无法揣摩出我下探球。我已经按照经googlemonsta无济于事找到了几个例子。任何指针到我出了差错就会大大apperciated。

        var writer = new StringWriter();
        param = "location=" + Server.UrlEncode(param);
        byte[] paramStream = Encoding.ASCII.GetBytes(param + "&param2=value");
        var URL = "http://www.somesite.com";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE; rv:1.9.1b2) Gecko/20081201 Firefox/3.1b2";
        request.ContentLength = paramStream.Length;
        using( var stream = request.GetRequestStream())
        {
            stream.Write(paramStream, 0, paramStream.Length);
        }

        var response = request.GetResponse();

        string result;
        using (var sr = new StreamReader(response.GetResponseStream()))
        {
            result = sr.ReadToEnd();
        }

谢谢!

编辑:据我可以告诉它击中的部位(我得到的html回),但PARAMS不推了过来。我基本上得到其中的值会出现有它是成功的。我试着除去第一和但没有取得任何进展。

修改:编辑代码,以反映变化

有帮助吗?

解决方案

可能摆脱&从第一个参数的开始?除此之外,它基本上没问题。 (检查参数名称在你真正的代码 - 在你的样品应该几乎可以肯定“参数”中得到了“paramater” - 但我们不知道你的真实的代码是什么样子或真正的网站所期待的。)

请提供关于所发生的情况的详细信息。我们知道这是行不通的,但也有很多不同的可能的故障模式:)

发生一个额外的思考 - 你有没有指定的内容长度。我不知道这是否是由WebRequest自动填充。这将是值得使用是Wireshark 来检查它是否是存在于所述出站请求。

正如实践的普遍观点,你应该处置WebResponse的,你不需要调用Close如果你已经得到了响应流的using语句:

string result;
using (WebResponse response = request.GetResponse())
{
    using (var sr = new StreamReader(response.GetResponseStream()))
    {
        result = sr.ReadToEnd();
    }
}

其他提示

您确认您拥有所有博文的值neccessary?我曾经在那里有,这是类似的形式上的隐藏的输入字段的情况下:

<input name="action" type="hidden" id="action" value="login">

和我不得不提供,作为一个PARAM为:

&action=login

请确保您不会错过从形式是什么,我说什么......

编辑:一件事:我只是看着我的代码再次,我已经做到了这一点,并注意到,我也有过这条线在那里:

request.ContentLength = bytes.Length;

不知道你需要的,但我注意到,你没有设置长度。

它不是作为一个回车/新线的参数之后是它简单的东西?综观上的互联网络HTTP一些文档,你显然需要一个空行之后。

(I将手动建议Telnet到本web服务器和粘贴您的请求。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top