我们正在开发一个 MobileFirst 项目,使用 Xamarin SDK 构建客户端代码(在这个 Android 示例中,尽管我们正在寻找也涵盖 iOS 的更通用的解决方案),我们正在迁移一些 JavaScript-基于 Java 的适配器。以前,我们使用 C# 代码调用这样的 JavaScript 适配器,以便将 cookie 插入到请求中(这些是为了呈现给 ISAM,尽管这主要是偶然的)。
var wlClient = WorklightClient.NativeObject as WLClient;
var cookie = new BasicClientCookie(name, value) { Path = path, Domain = domain, };
wlClient.CookieStore.AddCookie(cookie);
var connectResponse = await wlConnect.Connect();
var invocationData = new WorklightProcedureInvocationData("CP4BackendJavaScript", "cp4Test", new object[0]);
var responseAsProcedure = await wlClient.InvokeProcedure(invocationData);
鉴于我们正在迁移到基于 Java 的适配器,我们需要切换到 the ResourceRequest style调用。
但是,这似乎没有为我们提供将 cookie 插入请求的方法,因为我们正在使用的 WorklightResourceRequestAndroid 对象未链接到我们之前使用的 wlClient:
var uri = new Uri(_worklightClient.ServerUrl + "/adapters/CP4BackendJavaScript/cp4Test");
var request = new WorklightResourceRequestAndroid(uri, "GET");
var responseAsResource = await request.Send();
我们如何将已知的 cookies 插入到这个请求中?
最佳答案
连接问题:WorklightResourceRequestAndroid
类来自底层 Worklight.Xamarin.Android
impl。这可能在也可能不在连接的 wlClient 对象上,具体取决于您如何获得它。理想情况下,您不必访问底层操作系统特定的提供程序,而是留在共享命名空间 Worklight
中。例如:
Worklight.WorklightResourceRequest
。
您可以从 IWorklightClient.ResourceRequest(..)
获取它。 IWorklightClient
对象是您应该在 Android Activity 类中实例化的对象,例如:
IWorklightClient wlClient= Worklight.Xamarin.Android.WorklightClient.CreateInstance (this);
回答您的 cookie 问题:用于资源请求的底层 Android/iOS impl 没有 cookie 方法 - 因此它们也不在 Xamarin 层中。
关于c# - 使用 Xamarin WorklightResourceRequestAndroid API 时,我们如何将 cookie 插入到 MobileFirst 请求中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33434772/