我们要想使用web api, 需要首先在azure 中创建application. (如何创建application可以参考我的另一篇blog 从O365中获取users到D365中 )

Get

我们可以用JObject 和 JArray 来快速获取而不需要DeserializeObject

         //server-side online oauth2
var sessionResult = (Opportunity)Session["OpportunityData"];
var httpUrl = resourceUrl + "api/data/v9.1/accounts?$filter=accountid%20eq%20" + "hello world";
AuthenticationContext authContext = new AuthenticationContext("https://login.windows.net/common", false);
AuthenticationResult result = authContext.AcquireToken(resourceUrl, clientId, new UserCredential(account, password));
using (HttpClient httpClient = new HttpClient())
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
httpClient.Timeout = new TimeSpan(, , ); // 2 minutes
httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", result.AccessToken);
httpClient.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0");
httpClient.DefaultRequestHeaders.Add("OData-Version", "4.0");
HttpResponseMessage response = httpClient.GetAsync(httpUrl).Result;
var returnvalue = response.Content.ReadAsStringAsync().Result;
LogHelper.WriteLog("Return value:");
LogHelper.WriteLog(returnvalue);
JObject jo = JsonConvert.DeserializeObject<JObject>(returnvalue);
JArray ja = JsonConvert.DeserializeObject<JArray>(jo["value"].ToString());
          }

POST:

ServicePointManager.SecurityProtocol 是必须要添加的. 不然会抛出 security 的exception.

req.Headers.Add("If-Match", "*"); 如果我们在请求的表头里添加了  if-match的话,  如果有相同的record创建时,会抛出 exception 412 error 而不会去创建一条一模一样的数据.

                var weburi = resourceUrl + "api/data/v9.1/accounts";
AuthenticationContext authContext = new AuthenticationContext("https://login.windows.net/common", false);
AuthenticationResult result = authContext.AcquireToken(resourceUrl, clientId, new UserCredential(account, password));
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(weburi); req.Method = "post";
req.Accept = "application/json";
req.ContentType = "application/json; charset=utf-8";
req.Headers.Add("OData-MaxVersion", "4.0");
req.Headers.Add("OData-Version", "4.0");
req.Headers.Add("If-Match","*");
req.Headers.Set("Authorization", "Bearer " + result.AccessToken);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; var newSurveyResult = new JObject();
newSurveyResult.Add("booleanvalue", true);
newSurveyResult.Add("stringvalue", "Hello World!");byte[] data = Encoding.UTF8.GetBytes(newSurveyResult.ToString());
Stream newStream = req.GetRequestStream();
newStream.Write(data, , data.Length);
newStream.Close();
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
{
//StreamReader read = new StreamReader(res.GetResponseStream());
string head = res.Headers.ToString();
}

PATCH:

                var weburi = resourceUrl + "api/data/v9.1/accounts?$filter=accountid eq " + id;
AuthenticationContext authContext = new AuthenticationContext("https://login.windows.net/common", false);
AuthenticationResult result = authContext.AcquireToken(resourceUrl, clientId, new UserCredential(account, password));
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(weburi);
req.Method = "PATCH";
req.Accept = "application/json";
req.ContentType = "application/json; charset=utf-8";
req.Headers.Add("OData-MaxVersion", "4.0");
req.Headers.Add("OData-Version", "4.0"); req.Headers.Set("Authorization", "Bearer " + result.AccessToken);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; var newSurveyResult = new JObject
{
{"stringvalue", "Hello World"},
{"intvalue", 123 },
{ "booleanvalue" , true}
}; byte[] data = Encoding.UTF8.GetBytes(newSurveyResult.ToString());
Stream newStream = req.GetRequestStream();
newStream.Write(data, , data.Length);
newStream.Close();
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
{
StreamReader read = new StreamReader(res.GetResponseStream());
}

在后端C#中 call web api的更多相关文章

  1. 购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(3)--Idetity,OWIN前后端验证

    原文:购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(3)--Idetity,OWIN前后端验证 chsakell分享了前端使用AngularJS,后端使用ASP. ...

  2. 购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(2)--前端,以及前后端Session

    原文:购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(2)--前端,以及前后端Session chsakell分享了前端使用AngularJS,后端使用ASP.NE ...

  3. 购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(1)--后端

    原文:购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(1)--后端 chsakell分享了前端使用AngularJS,后端使用ASP.NET Web API的购物车 ...

  4. 对一个前端AngularJS,后端OData,ASP.NET Web API案例的理解

    依然chsakell,他写了一篇前端AngularJS,后端OData,ASP.NET Web API的Demo,关于OData在ASP.NET Web API中的正删改查没有什么特别之处,但在前端调 ...

  5. 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(4)

    chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...

  6. 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(3)

    chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...

  7. 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(2)

    chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...

  8. 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(1)

    chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...

  9. ASP.NET 5系列教程 (六): 在 MVC6 中创建 Web API

    ASP.NET 5.0 的主要目标之一是统一MVC 和 Web API 框架应用. 接下来几篇文章中您会了解以下内容: ASP.NET MVC 6 中创建简单的web API. 如何从空的项目模板中启 ...

随机推荐

  1. idea自定义快捷鍵

    一  生成方法注释 1. File -> Settings... 2. Editor -> Live Templates,点击最右边的+ 3. 依自己情况选择,我这里选择的 Live Te ...

  2. Mysql:分支结构—case结构

    case结构 情况一:类似于家擦中的switch语句  一般用于实现等值判断 语法: CASE 变量|表达式|字段 WHEN 要判断的值 THEN 返回的值1或语句1; WHEN 要判断的值 THEN ...

  3. Egret Engine 2D - 遮罩

      矩形遮罩 shp.mask = new egret.Rectangle(20,20,30,50);   注意如果rec发生变化,需要重要将rec赋值给shp.mask 删除遮罩的方法 sprite ...

  4. oracle学习笔记(3)

    使用profile文件对口令进行管理 sql>create profile 文件名 limit failed_login_arrempts 3 password_lock_time 2; 将配之 ...

  5. Vue.js(2)- 过滤器

    概念:过滤器本质上就是一个函数,可被用作一些常见的文本格式化. 过滤器只可以用在两个地方:mustache 插值表达式和 v-bind 表达式. 过滤器应该被添加在 JavaScript 表达式的尾部 ...

  6. 计划任务常用在线工具-微服务信息整-seafile网盘-亿图操作-正则工具

    正则工具 https://regex101.com/ http://www.regexp.cn/Regex 身份证匹配 ^(\\d{}|\d{})(\\d|[xX])$ \d{}[-9Xx]|\d{} ...

  7. [题解] Luogu P4721 【模板】分治 FFT

    分治FFT的板子为什么要求逆呢 传送门 这个想法有点\(cdq\)啊,就是考虑分治,在算一段区间的时候,我们把他分成两个一样的区间,然后先做左区间的,算完过后把左区间和\(g\)卷积一下,这样就可以算 ...

  8. consul配置

    参考:https://blog.csdn.net/achenyuan/article/details/80389410 gcp: consul安装目录:/usr/local/bin/consul co ...

  9. VScode 修改中文字体

    打开vscode ctrl+,打开设置 找到font,第一个是首选的英文字体,第二个是中文字体.

  10. part11 Vue项目接口联调//真机测试

    何为项目接口联调? 前端代码编译好了  后端接口写好了 我们就需要去掉前端模拟数据干掉 用后端提供的数据.进行前后端的一个调试 如何联调? config目录下面 index.js 文件 dev 中pr ...