API调用

姎楹 2020-08-04 10:48:43
在做aspnet+MVC的系统时,需要调用别的系统的api接口,更新他们那边的数据
在网上找了很多,本来是想写后台的,因为可以判断接口是否成功然后再更新自己这边的表
但是大多是js调用的,类似这样

var postdata = { Id: "1", Name: "Jim", CreateTime: "1988-09-11" };
$.ajax({
type: "get",
url: "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm",
data: { tel: "180520410" },//postdata
dataType: 'jsonp',
crossDomain: true,
success: function (data, status) {
if (status == "success") {
alert(data);
//$.lrSaveForm(top.$.rootUrl + '/FK_Production/Basic_Model/Clean', { BM_Id: bm_id }, function (res) {
// page.search();
//});
}
}
});

上面列子是get,因为是第一次调用api,怎么感觉和之前写的前端调用后台方法一样,
想请问下就我这个需求,用js调用是不是可以的?
...全文
2265 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2020-08-05
  • 打赏
  • 举报
回复
引用 11 楼 姎楹 的回复:
[quote=引用 10 楼 正怒月神 的回复:]
我是这么写的,调用是成功的能改数据[/quote] 我让你使用同步方案的原因是,因为你的外部调用是同步方案。 而同步方案+内部的异步方案,可能会造成死锁。 异步具有感染性质。就是从底层开始异步,往往就会使得上层全部改为异步。 因此,我建议你使用同步方法。在之前给出的url中,有同步方法。
姎楹 2020-08-05
  • 打赏
  • 举报
回复
引用 10 楼 正怒月神 的回复:

public async void APIPost(string BM_Id, string State)
        {
            Dictionary<string, string> dic = new Dictionary<string, string>();
            dic.Add("BM_Id", BM_Id);
            dic.Add("State", State);
            var content = new FormUrlEncodedContent(dic);
            HttpClient client = new HttpClient();
            client.BaseAddress = new Uri("http://localhost:55931/");
            var result = await client.PostAsync("ActionApi/UserInfo/UpdateState?BM_Id=" + BM_Id+ "&State="+State, content);
            Console.WriteLine("Result:{0}", result);
        }
调用:a.APIPost(BM_Id, "已清洗"); apidemo:

public class UserInfoController : ApiController
    {
        private SqlConnection conn = null;
        private SqlCommand cmd = null;
        //private SqlDataAdapter adapter = null;  
        //为了方便,设为全局对象的sql语句  
        private string sql = null;
        private ApiTools tool = new ApiTools();
        [HttpPost]
        [HttpGet]
        public int UpdateState(string BM_Id,string State)
        {
            sql = "update Basic_Model set BM_State='"+ State + "' where BM_Id='" + BM_Id + "'";
            int i=execute(sql);
            return i;
        }
我是这么写的,调用是成功的能改数据
正怒月神 版主 2020-08-05
  • 打赏
  • 举报
回复
引用 9 楼 姎楹 的回复:
[quote=引用 8 楼 正怒月神 的回复:]
对方说她的api是异步的[/quote] 不不用管对方是什么,你先同步就是了
姎楹 2020-08-05
  • 打赏
  • 举报
回复
引用 8 楼 正怒月神 的回复:
对方说她的api是异步的
masanaka 2020-08-04
  • 打赏
  • 举报
回复
如果对方api允许跨域的话,前后台调用都可以。
但是因为是更新类的api,那应该会有身份票据类的信息要提供,这个要从安全性的角度考虑,这些相对敏感的数据暴露在前端会不会有问题。
threenewbee 2020-08-04
  • 打赏
  • 举报
回复
你要在服务器C# 调用,可以使用 HttpWebRequest 类,类似。
正怒月神 版主 2020-08-04
  • 打赏
  • 举报
回复
引用 4 楼 姎楹 的回复:
[quote=引用 3 楼 正怒月神 的回复:]C# 后台调用api 我这是调用失败了吗
你用链接里的同步,别用异步。 因为你用异步的方式是错误的。。。
姎楹 2020-08-04
  • 打赏
  • 举报
回复
引用 6 楼 欧皇神降术 的回复:
跟踪发现get是能取到数据的,就是不写到控制台
欧皇神降术 2020-08-04
  • 打赏
  • 举报
回复
跨域是浏览器拦截了。所以客户端请求时没有跨域这一说的。函数求值需要运行所有线程,不代表接口失败了。你这个应该按F11进入方法 继续调试
姎楹 2020-08-04
  • 打赏
  • 举报
回复
引用 2 楼 masanaka 的回复:
的确是,我从网上找了好几个api接口,在js调用的时候都会跨域之类的,估计前台写行不通了
姎楹 2020-08-04
  • 打赏
  • 举报
回复
引用 3 楼 正怒月神 的回复:
C# 后台调用api
这个列子我看见过,我当时新建了个CallWebAPI类,但是知道怎么调用,我刚又建了一个 因为没有post的列子,我测试的get 应该要返回些东西到控制台吧,我调试说是:函数求值需要运行所有线程 我这是调用失败了吗
正怒月神 版主 2020-08-04
  • 打赏
  • 举报
回复

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧