最近写了一个关于ad域的项目,ad域我也是第一次接触,对ad域的总结我会晚一些时间写出来。在此我先总结一下关于Java调用c#的webapi的一个注意点。
1 [HttpPost] 2 public Dictionary<string, object> CreateAccount([FromBody]object userJson) 3 { 4 5 6 return _icreateAccount.NewAccount(userJson.ToString()); 7 8 9 }
这样写在c#中使用是可以的,但是如果Java来调用这个接口是不行的。虽然能够调到这个方法,但是参数userJson中什么也没有,也不是null。后来问了老同事才明白什么原因,调用方以流的方式过来调用数据,c#的api接收不到来自Java的流,必须做出以下修改:
1 [HttpPost] 2 public Dictionary<string, object> CreateAccount() 3 { 4 5 byte[] byts = new byte[HttpContext.Current.Request.InputStream.Length]; 6 HttpContext.Current.Request.InputStream.Read(byts, 0, byts.Length); 7 string req = System.Text.Encoding.UTF8.GetString(byts); 8 return _icreateAccount.NewAccount(req); 9 }
这样读取Java传过来的流就没有问题了。