最近写了一个关于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传过来的流就没有问题了。