WebRequest不会传递标头

时间:2014-11-18 23:02:08

标签: c# webrequest

我已经试过并尝试了所有的事情,我已经完成了100次,没有任何问题,但现在我很难过。

我只是想从webrequest传递标题信息。

客户端单独运行并连接到wcf rest服务。该服务有这个代码被击中:

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Authorization, Origin, Content-Type, Accept, X-Requested-With");

客户有这个:

    var client = WebRequest.Create(url);
    client.Method = type.ToString().ToUpper();
    client.ContentType = "application/json";
    client.ContentLength = bytes.Length;
    client.Headers.Add(String.Format("Authorization: {0}", "test12345"));

我也尝试过例如:

    client.Headers["X-Requested-With"] = "test1234";
    client.Headers["Authorization"] = "test1234";

无论我如何尝试设置标题,它们都不会传递。当我在小提琴手中查看请求时,授权永远不会存在。我也尝试发送X-Requested-With等...但不管标题不会通过。

提前致谢。

更新: 我找到了问题,但没有找到解决方案: WebRequest will not pass headers when used from within ASP.NET MVC controller

4 个答案:

答案 0 :(得分:0)

服务器是否需要身份验证?根据{{​​3}}回答,WebRequest在被质疑之前不会发送凭据。如果您想发送它,无论您是否需要使用与WebRequest不同的类来发送请求,例如RestSharp

答案 1 :(得分:0)

您可以使用RestSharp而不是使用WebRequest。它有一个简单的抽象和API。

答案 2 :(得分:0)

我知道这可能有点太晚了(在寻找我的问题的答案时发现了这一点。)

不知道它是否对您有所帮助,但我的是这样的,我在服务器端有授权标题,我使用的是4.5.1。

客户端

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Headers[HttpRequestHeader.Authorization] = "basic " +
            Convert.ToBase64String(
            Encoding.ASCII.GetBytes(
            string.Format("{0}|{1}", "login", "password")));

string result = string.Empty;
using (WebResponse resp = (HttpWebResponse)req.GetResponse())
{
    using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
    {
        result = sr.ReadToEnd();
    }
}

服务器端

WebOperationContext.Current.IncomingRequest.Headers[HttpRequestHeader.Authorization]

答案 3 :(得分:0)

使用DefaultRequestHeaders

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(“test12345”)