客户端调用json-based服务非常简单,就是标准的http调用。
http调用首先要解决URL的组成,D365 FO json-based调用的url组成如下:
https://usnconeboxax1aos.cloud.onebox.dynamics.cn/api/services/{服务组名}/{服务名}/{方法名}
调用的代码很简单,如下所示:
1 var request = HttpWebRequest.Create(ServiceGroupPreDeclarationPath);2 request.Headers[OAuthHelper.OAuthHeader] = OAuthHelper.GetAuthenticationHeader(true);3 request.Method = "POST";4 5 var inputString = txtRequestString.Text;6 var requestContract = new7 {8 input = inputString9 };
10 var requestContractString = JsonConvert.SerializeObject(requestContract);
11
12 using (var stream = request.GetRequestStream())
13 {
14 using (var writer = new StreamWriter(stream))
15 {
16 writer.Write(requestContractString);
17 }
18 }
19 using (var response = (HttpWebResponse)request.GetResponse())
20 {
21 using (Stream responseStream = response.GetResponseStream())
22 {
23 using (StreamReader streamReader = new StreamReader(responseStream))
24 {
25 string responseString = streamReader.ReadToEnd();
26 JToken jsonObject = JToken.Parse(responseString);
27 string returnedString = jsonObject.Value<string>();
28 MessageBox.Show(returnedString);
29 }
30 }
31 }
调用的代码非常简单,看代码就很明白了,唯一要说的是下面这几行代码
1 var requestContract = new
2 {
3 input = inputString
4 };
这里是实例化了一个匿名类,注意这里的input,一定要与调用服务方法的入参的参数名保持一致,否则会报错,因为框架就是根据这个来识别调用参数的。
到这里D365 FO第三方集成的过程就完成了,整体来说D365 FO第三方集成调用还是简单直接的。
后续大量使用的时候遇到问题具体的问题再记录。