为 iOS MobileFirst ResourceRequest 适配器调用设置 HTTP 标头失败

本文关键字:HTTP 失败 设置 调用 iOS MobileFirst ResourceRequest 适配器 | 更新日期: 2023-09-27 18:35:07

我有一个客户正在使用 Xamarin 连接到 MobileFirst v7.1 适配器 - 他们使用的是最新的 Xamarin SDK v7.1。

他们使用以下代码连接到适配器,并且需要在标头中附加一些信息。 当他们为 Android 环境执行代码时,这工作正常,但是当他们对 iOSv9.1 使用相同的代码时,.SetHeader() 调用会引发异常。

var uri = new Uri(_worklightClient.ServerUrl + "/adapters/someAction");
var request = _worklightClient.ResourceRequest(uri, "GET");
#The following code works fine for Android BUT not for iOS9.1
#if __ANDROID__
    request.SetHeader(new KeyValuePair<string, string>("user", "mobileTesterOne"));
    request.SetHeader(new KeyValuePair<string, string>("env", "build"));
#endif
#To get it to work for iOSv9.1 this code works, but is it correct?
#if __IOS__
    WLClient.SharedInstance.AddGlobalHeader("user", "mobileTesterOne");
    WLClient.SharedInstance.AddGlobalHeader("env", "build");
#endif
var response = await request.Send();

他们发现,对于iOSv9.1环境,如果他们使用WLClient.SharedInstance.AddGlobalHeader()调用它就可以工作。 但是,这是一种解决方法,他们担心这不是执行此任务的正确方法,并且不确定使用此方法是否会导致其他当前未知的问题。

检查信息中心后,我看到它提到使用.请求对象的 SetHeader(),所以理论上他们做得正确:http://www-01.ibm.com/support/knowledgecenter/SSHS8R_7.1.0/com.ibm.worklight.apiref.doc/html/refjavascript-client/html/WLResourceRequest.html?cp=SSHS8R_7.1.0%2F10-0-0-1-30

有人对最好的方法有任何建议吗?

为 iOS MobileFirst ResourceRequest 适配器调用设置 HTTP 标头失败

作为一种解决方法,您可以使用 WorklightResourceRequest.AddHeader () API 向请求添加标头。你在问题中提到的方法也是有效的,但这意味着为Android和iOS编写单独的代码。