You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过POST向WebApi发送原始数据?MVC调用报错求助

问题分析与解决方案

你遇到的这个指定值没有':'分隔符。参数名: header错误,根源确实就在你怀疑的那行代码:request.Headers.Add(postData);。

错误原因

WebRequest.Headers.Add()方法要求传入的是键值对格式的头部信息(比如"Key: Value"),但你直接把pToken这个原始字符串传进去了——它没有:分隔符,自然会触发异常。更关键的是,Postman里能成功的请求,应该是把token放到请求体里,而非请求头中,你完全搞错了数据传递的位置。

修正后的代码

下面是调整后的完整代码,我把token移到了请求流中,同时保留了正确的ApiKey请求头逻辑:

public UserCustom GetUserByToken(string pToken) 
{ 
    ResponseLogin vRespuesta = new ResponseLogin(); 
    UserCarmocal vUsuarioFinal = null; 
    string vApiKey = ConfigurationManager.AppSettings["ApiKey"]; 
    string vDirUser = ConfigurationManager.AppSettings["EndpointUsr"]; 

    WebRequest request = WebRequest.Create(vDirUser); 
    request.Method = "POST"; 
    request.ContentType = "application/json; charset=utf-8"; 
    request.Headers.Add("ApiKey", vApiKey); 

    // 将token作为请求体发送,而非添加到请求头
    string postData = pToken; 
    byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
    request.ContentLength = byteArray.Length; 

    // 写入请求体数据到流中
    using (Stream dataStream = request.GetRequestStream()) 
    { 
        dataStream.Write(byteArray, 0, byteArray.Length); 
    } 

    using (Stream s = request.GetResponse().GetResponseStream()) 
    { 
        using (StreamReader sr = new StreamReader(s)) 
        { 
            vRespuesta = new JavaScriptSerializer().Deserialize<ResponseLogin>(sr.ReadToEnd()); 
            if (vRespuesta.status == "success") 
            { 
                vUsuarioFinal = new UserCarmocal(); // 初始化对象,避免空引用异常
                vUsuarioFinal.FirstName = "Test"; 
            } 
        } 
    } 

    return vUsuarioFinal; 
}

额外注意事项

  • 我补充了vUsuarioFinal = new UserCarmocal();这行代码,否则当status不为success时,返回的空对象若被后续代码调用属性,会触发空引用异常。
  • 如果你在Postman中是把token放到特定的JSON字段里(比如{"token": "你的令牌内容"}),那需要把postData改成对应的格式,比如string postData = $"{{\"token\": \"{pToken}\"}}";,确保和Postman的请求体完全一致。

内容的提问来源于stack exchange,提问作者Fryla- Cristian Marucci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:06:05