为 iOS MobileFirst ResourceRequest 适配器调用设置 HTTP 标头失败
Posted
技术标签:
【中文标题】为 iOS MobileFirst ResourceRequest 适配器调用设置 HTTP 标头失败【英文标题】:Setting the HTTP headers for an iOS MobileFirst ResourceRequest adapter call fails 【发布时间】:2016-02-18 09:49:41 【问题描述】:我有一个客户正在使用 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
有人对最好的方法有什么建议吗?
【问题讨论】:
什么错误?异常? 已向客户请求了该详细信息,并将在可用时发布(否则我会最初发布)。有没有人尝试将 .SetHeader() 用于 iOS 请求?如果是这样,您是否收到错误消息? 客户可以随时打开 PMR 以获得支持。 【参考方案1】:作为一种解决方法,您可以使用 WorklightResourceRequest.AddHeader () API 将标头添加到您的请求中。 您在问题中提到的方法也是有效的,但这意味着为 Android 和 iOS 编写单独的代码。
【讨论】:
以上是关于为 iOS MobileFirst ResourceRequest 适配器调用设置 HTTP 标头失败的主要内容,如果未能解决你的问题,请参考以下文章
为 Android 和 iOS MobileFirst V8.0 Cordova 应用程序指定不同的包标识符
IBM MobileFirst 7.1 推送订阅用户标识为空
iOS MobileFirst 7.1 应用程序在工作灯连接时出错