gpt4 book ai didi

商务通 2016 : How to use HTTP Send adapter with API token

转载 作者:行者123 更新时间:2023-12-02 18:39:49 24 4
gpt4 key购买 nike

我需要通过 BizTalk 发送适配器调用 REST API 服务。 API 仅使用 header 中的 token 进行身份验证/授权。我已经使用 httpclient 在 C# 控制台应用程序中对此进行了测试,它工作正常:

string apiUrl = "https://api.site.com/endpoint/<method>?";
string dateFormat = "dateFormat = 2017-05-01T00:00:00";

using (var client = new HttpClient())
{

client.DefaultRequestHeaders.Add("token", "<token>");
client.DefaultRequestHeaders.Add("Accept", "application/json");

string finalurl = apiUrl + dateFormat;
HttpResponseMessage resp = await client.GetAsync(finalurl);
if (resp.IsSuccessStatusCode)
{
string result = await resp.Content.ReadAsStringAsync();
var rootresult = JsonConvert.DeserializeObject<jobList>(result);
return rootresult;

}
else
{
return null;
}
}

但是我想使用 BizTalk 进行调用并处理响应。

我尝试使用 wcf-http 适配器,选择“传输”以确保安全(它是一个 https 站点,因此需要安全性(?)),没有指定凭据类型,并将带有 token 的 header 放置在“消息”中适配器配置选项卡。但这会失败,但出现以下异常:System.IO.IOException:身份验证失败,因为远程方已关闭传输流。

我已经尝试用谷歌搜索这个特定场景,但找不到解决方案。我确实找到了this文章提供了 OAUth 处理的建议,但令我惊讶的是,即使使用 BizTalk 2016,我仍然必须为如此简单的事情创建自定义程序集。

有谁知道如何在 wcf-http 发送适配器中完成此操作?

最佳答案

是的,您必须编写自定义端点行为并将其添加到发送端口。事实上,使用 WCF-WebHttp 适配器甚至 Basic Auth doesn't work所以我目前正在编写一个端点行为来解决这个问题。

OAuth 的问题之一是,没有一个每个人都遵循的标准,到目前为止,我不得不编写 2 种不同的 OAuth 行为,因为它们的实现方式不同。一个使用 secret 和哈希时间戳来获取 token ,另一个使用基本身份验证来获取 token 。此外,其中之一您可以使用相同的信用获得多个 token ,而另一个将立即使旧 token 过期。

我必须编写自定义行为的另一件事是端点需要哪个版本的 TLS,因为默认情况下 BizTalk 2013 R2 会尝试 TLS 1.0,如果网站不允许,则会失败。

您可以通过投票 Add support for OAuth 2.0 / OpenID Connect authentication 向 Microsoft 反馈您希望拥有此功能。

也许有人会开源他们的解决方案。查看公告:BizTalk Server embrace open source!

关于商务通 2016 : How to use HTTP Send adapter with API token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46370226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com