WebForms对接API携带POST参数请求返回空值问题求助
代码错误原因及修复方案
存在的问题
- 变量名拼写错误:你在
crudinsert方法的using块中实例化的WebClient对象命名为clien2,但后续设置请求头、调用上传方法时使用的变量名是client,没有使用正确的实例对象操作,导致请求未携带你序列化的参数,是返回空值的核心原因。 - 缺少请求编码配置:第一个可正常运行的方法中明确设置了
client.Encoding = Encoding.UTF8;,第二个方法未配置编码,会导致特殊字符、中文传输异常,触发API端解析失败返回空。 - 冗余配置问题(非报错原因):第一个方法中同时用字符串键和枚举类型设置了两次Content-Type请求头,属于冗余操作,保留任意一种即可。
修复后代码
private void crudinsert() { string apiUrl = apiurl + "ins_rec_crudparentmenu"; string x = ""; var vm = new { mod = "0", moduldesc ="test'", modulurl = "tesx.aspx", idparent= "0" }; using (var client = new WebClient()) { var dataString = (new JavaScriptSerializer()).Serialize(vm); // 补充UTF8编码配置 client.Encoding = Encoding.UTF8; client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); x = client.UploadString(apiUrl, "POST", dataString); } Response.Write("output:"+x); }
如果修改后仍然返回空,可检查API端是否要求参数属性名大小写匹配,或是否需要携带其他鉴权请求头。
内容的提问来源于stack exchange,提问作者atok
相关产品推荐
相关产品推荐

