お世話になっております。
Dynamics 365上のデータを、WebAPIを介して取得しようと試みてます。
下記コードで取得は出来ました。
C#
1Console.WriteLine("取引先企業名: {0}", account["name"]);
の、nameように
プロパティ(カラム)指定するとそのプロパティは取得できてますが、
c#
1Console.WriteLine(account);
のようにJSONを丸まる出力すると、下のようになぜか先頭のデータが一部欠損して表示されます。
※{(カッコ)も無い
どうすれば全て表示されるでしょうか?
分かる方宜しくお願い致します。
json
1 "name": "ABCセンター", 2 "os_deetashubetsu": 717680001, 3 "accountid": "4ae3794f-8479-e611-8141-c4346bacbe48", 4 "yominame": "ABCセンター" 5} 6{ 7 "@odata.etag": "W/\"19195213\"", 8 "name": "TEST", 9 "os_deetashubetsu": 717680000, 10 "accountid": "b13e0ee6-1e22-e511-810d-c4346bacaf34", 11 "os_bikou": "aaaaaa205", 12 "address1_city": "滋賀県", 13 "telephone2": "0799999999", 14 "address1_postalcode": "5220054", 15 "telephone1": "079999999", 16 "yominame": "テスト", 17 "address1_composite": "滋賀県xxxxxxxxxx" 18}
C#
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6 7using Microsoft.IdentityModel.Clients.ActiveDirectory; 8using System.Net.Http; 9using System.Net.Http.Headers; 10using Newtonsoft.Json.Linq; 11using System.Net; 12 13namespace ConsoleApplication1 14{ 15 class Program 16 { 17 static string serverUrl = "https://xxxxxxxxx.crm5.dynamics.com"; 18 static string authUrl = "https://login.windows.net/common"; 19 static string clientId = "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx"; 20 static string reirectUri = "http://localhost/webapi"; 21 22 23 24 static void Main(string[] args) 25 { 26 try 27 { 28 29 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 30 31 32 33 AuthenticationContext authContext = new AuthenticationContext(authUrl); 34 AuthenticationResult result = authContext.AcquireToken(serverUrl, clientId, new Uri(reirectUri)); 35 36 Program app = new Program(); 37 38 //Task.WaitAll(Task.Run(async () => await app.Run(result.AccessToken))); 39 Task.WaitAll(Task.Run(async () => await app.RunViewQueries(result.AccessToken))); 40 41 } 42 catch(System.Exception ex) 43 { 44 Console.WriteLine(""); 45 Console.WriteLine(ex.Message); 46 } 47 finally 48 { 49 Console.WriteLine("Press <Enter> to exit."); 50 Console.ReadLine(); 51 } 52 } 53 54 /* 55 public async Task Run(string accessToken) 56 { 57 // HttpClient の作成 58 using (HttpClient httpClient = new HttpClient()) 59 { 60 // Web API アドレスの作成 61 string serviceUrl = serverUrl + "/api/data/v8.0/"; 62 // ヘッダーの設定 63 httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 64 httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); 65 } 66 } 67 */ 68 69 public async Task RunViewQueries(string accessToken) 70 { 71 // HttpClient の作成 72 using (HttpClient httpClient = new HttpClient()) 73 { 74 // Web API アドレスの作成 75 string serviceUrl = serverUrl + "/api/data/v8.0/"; 76 // ヘッダーの設定 77 httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 78 httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); 79 80 // 取引先企業ビューの一覧取得 81 HttpResponseMessage retrieveRes = await httpClient.GetAsync(serviceUrl + "savedqueries?$select=name&$filter=returnedtypecode eq 'account'"); 82 JToken results = JObject.Parse(retrieveRes.Content.ReadAsStringAsync().Result)["value"]; 83 84 // ビュー名の表示 85 foreach (JToken result in results) 86 { 87 Console.WriteLine("ビュー名: {0}", result["name"]); 88 } 89 90 // 取引先企業レコードの取得 91 retrieveRes = await httpClient.GetAsync(serviceUrl + "accounts?savedQuery=" + results[0]["savedqueryid"]); 92 JToken accounts = JObject.Parse(retrieveRes.Content.ReadAsStringAsync().Result)["value"]; 93 94 // 取引先企業名の表示 95 foreach (JToken account in accounts) 96 { 97 // Console.WriteLine("取引先企業名: {0}", account["name"]); 98 Console.WriteLine(account); 99 } 100 } 101 } 102 103 104 } 105} 106
回答1件
あなたの回答
tips
プレビュー