C# 在使用Xamarin WorklightResourceRequestAndroid API时,如何将cookie插入MobileFirst请求?

C# 在使用Xamarin WorklightResourceRequestAndroid API时,如何将cookie插入MobileFirst请求?,c#,android,cookies,xamarin,ibm-mobilefirst,C#,Android,Cookies,Xamarin,Ibm Mobilefirst,我们正在进行一个MobileFirst项目,使用Xamarin SDK构建客户端代码(在本例中,我们在Android上,尽管我们正在寻找一个更通用的解决方案,该解决方案也涵盖了iOS),我们正在将一些基于JavaScript的适配器迁移到Java。以前,我们使用C#代码调用类似这样的JavaScript适配器,以便在请求中插入cookie(这些cookie将呈现给ISAM,尽管这大部分是偶然的) 考虑到我们正在迁移到基于Java的适配器,我们需要切换到调用类型 但是,这似乎没有为我们提供将coo

我们正在进行一个MobileFirst项目,使用Xamarin SDK构建客户端代码(在本例中,我们在Android上,尽管我们正在寻找一个更通用的解决方案,该解决方案也涵盖了iOS),我们正在将一些基于JavaScript的适配器迁移到Java。以前,我们使用C#代码调用类似这样的JavaScript适配器,以便在请求中插入cookie(这些cookie将呈现给ISAM,尽管这大部分是偶然的)

考虑到我们正在迁移到基于Java的适配器,我们需要切换到调用类型

但是,这似乎没有为我们提供将cookie插入请求的方法,因为我们正在使用的WorklightResourceRequestAndroid对象没有链接到我们以前使用的wlClient:

var uri = new Uri(_worklightClient.ServerUrl + "/adapters/CP4BackendJavaScript/cp4Test");
var request = new WorklightResourceRequestAndroid(uri, "GET");
var responseAsResource = await request.Send();

如何将已知cookie插入此请求?

连接问题:
WorklightResourceRequestAndroid
类来自底层的
Worklight.Xamarin.Android
impl。这可能在连接的wlClient对象上,也可能不在,这取决于您是如何获得它的。理想情况下,您不必去底层操作系统特定的提供程序,而应该留在共享名称空间
Worklight
。e、 g:

Worklight.WorklightResourceRequest

您可以从
IWorklightClient.ResourceRequest(..)
获取它。
IWorklightClient
对象是您应该在Android活动类中实例化的对象,例如:

IWorklightClient-wlClient=Worklight.Xamarin.Android.WorklightClient.CreateInstance(此)


回答您的cookie问题:底层Android/iOS impl for resource request没有cookie方法-因此它们也不在Xamarin层中。

好的,根据Ajay的建议,答案似乎是使用静态实例代码插入cookie:

var wlClient = WorklightClient.NativeObject as WLClient;
var cookie = new BasicClientCookie(name, value) { Path = path, Domain = domain, };
wlClient.CookieStore.AddCookie(cookie);
var _worklightClient = WorklightClient.CreateInstance(activity)
var uri = new Uri(_worklightClient.ServerUrl + '/adapters/CP4BackendJavaScript/cp4Test");
var request = _worklightClient.ResourceRequest(uri, "GET");
var responseResource = await request.Send();
然后,我们可以创建一个实例,并根据该实例发出请求,从而自动插入cookie:

var wlClient = WorklightClient.NativeObject as WLClient;
var cookie = new BasicClientCookie(name, value) { Path = path, Domain = domain, };
wlClient.CookieStore.AddCookie(cookie);
var _worklightClient = WorklightClient.CreateInstance(activity)
var uri = new Uri(_worklightClient.ServerUrl + '/adapters/CP4BackendJavaScript/cp4Test");
var request = _worklightClient.ResourceRequest(uri, "GET");
var responseResource = await request.Send();