0

我正在尝试设置 httpwebrequest 标头的referer参数的值,但它给出了错误-

我正在使用的函数(C#):

webRequest.Headers.Set(HttpRequestHeader.Referer, "http://www.microsoft.com");

错误:

Invalid parameters. A required parameter is not found or contains invalid value.
4

4 回答 4

4

以下是典型用法:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("");
req.Referer = "http://www.google.com";

显示您的代码。

于 2009-02-22T19:17:41.443 回答
4

从MSDN尝试此方法 如果您发布代码,我可以更好地帮助您。

HttpWebRequest    myHttpWebRequest=(HttpWebRequest)WebRequest.Create(myUri);
// Set referer property  to http://www.microsoft.com .
myHttpWebRequest.Referer="http://www.microsoft.com";
// Assign the response object of 'HttpWebRequest' to a 'HttpWebResponse' variable.
HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();
// Display the contents of the page to the console.
Stream streamResponse=myHttpWebResponse.GetResponseStream();
StreamReader streamRead = new StreamReader( streamResponse );
Char[] readBuffer = new Char[256];
int count = streamRead.Read( readBuffer, 0, 256 );
Console.WriteLine("\nThe contents of HTML page are.......");    
while (count > 0) 
{
    String outputData = new String(readBuffer, 0, count);
    Console.Write(outputData);
    count = streamRead.Read(readBuffer, 0, 256);
}
Console.WriteLine("\nHTTP Request  Headers :\n\n{0}",myHttpWebRequest.Headers);
Console.WriteLine("\nHTTP Response Headers :\n\n{0}",myHttpWebResponse.Headers);    
streamRead.Close();
streamResponse.Close();
// Release the response object resources.
myHttpWebResponse.Close();
Console.WriteLine("Referer to the site is:{0}",myHttpWebRequest.Referer); 
于 2009-02-22T18:38:49.570 回答
1

有一些保留的 HTTP 标头是其中之一,您无法通过webRequest.Headers.SetReferer 设置它们。

对于这些,总是需要设置一个特殊的属性。

在你的情况下webRequest.Referer = "http://google.com"会做。

于 2009-02-22T18:49:03.647 回答
0

@kedar kamthe,你不能把 HttpRequestHeader.Referer 放在那里,因为我相信这是一个值,但不确定......我想你想用这个:

webRequest.Headers.Set("Referer", " http://www.microsoft.com ");

但是您应该将其用作 Chris Ballance 的示例。那应该可以,但是如果那不起作用,请按照我上面的说明尝试;)。

你应该把你的代码放在这里,这样我们就可以看到哪里出了问题。

于 2009-02-22T18:53:33.497 回答