我需要通过 BizTalk 发送适配器调用休息 API 服务。API 仅使用标头中的令牌进行身份验证/授权。我已经使用 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 站点,因此需要安全性(?)),没有指定凭据类型,并将带有令牌的标头放在“消息”选项卡中适配器配置。这失败了,但出现以下异常:System.IO.IOException:身份验证失败,因为远程方已关闭传输流。
我已经尝试在谷歌上搜索这个特定的场景,但找不到解决方案。我确实找到了这篇文章,其中包含有关 OAUth 处理的建议,但令我惊讶的是,即使使用 BizTalk 2016,我仍然必须为如此简单的事情创建自定义程序集。
有谁知道如何在 wcf-http 发送适配器中做到这一点?