在工作停滞了一年以后,重入职场,作为一个即将步入中年程序员,真的感觉大脑像被抽空过一样,重拾那些平台和框架,就像捡起洒落一地的沙子一样费劲。
废话不多说,就说最近接触WEB API,一边写API,一边写客户端程序进行接口测试,接口调通并不难,但被传参问题卡住了,WEB API中POST方法接收的来自客户端的参数始终为空NULL值,查阅了很多人的解决方法,比如request.ContentType = "application/json"; 或比如将API中入参类型改为dynamic,或改为object,或改为[FromBody],结果都不行,参数始终为NULL,这个问题困了我整整两天!!!
就在今天,我重新检查了一遍客户端测试代码,发现我写的request.Method = "POST",灵机一动,会不会是大写的问题,于是将大写改成小写,request.Method = "post", TMD居然就成功了!
客户端核心代码:
private string PostUrl(string url, string postData) { string result = ""; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "post"; req.ContentType = "application/json"; byte[] data = Encoding.UTF8.GetBytes(postData); req.ContentLength = data.Length; try { using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(data, 0, data.Length); reqStream.Close(); } HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream stream = resp.GetResponseStream(); //获取响应内容 using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { result = reader.ReadToEnd(); } } catch (Exception EE) { result = EE.ToString(); } return result; }服务端post获取方法:
[HttpPost] public string getCardInfoModelByPost(dynamic data) { //return "收到来自dynamic的数据:" + data.id + data.name; string error = string.Empty; try { if (data != null) { #region 解析数据 string id = data.id; string name = data.name; #endregion } } catch (Exception ex) { error = ex.Message; } return error; }
