想把OK网络操作_1里面的cook取出来,供OK网络操作_2使用,代码应该怎么写
变量 请求头1=创建 OK网络请求头()
请求头1=OK网络操作_1.取全局请求头()
编辑框_1.内容= 请求头1.取Json文本()
我这样写,软件闪退
您好,您的需求核心思路为:
1.先使用ok1发送请求,并获取返回的cookie。
2.使用ok1返回的cookie交给ok2发送请求。
代码示例(V4.7.6):
'* ******************************************************************************
'* 版权说明:Copyright(C) All Rights Reserved VcnStudio
'* 程序版本:V1.0
'* 文件描述:两个okhttp操作共享cookie
'* 修改日志:
'* ******************************************************************************
' 定义两个ok网络操作对象
变量 ok网络操作1 为 OK网络操作
变量 ok网络操作2 为 OK网络操作
' 储存ok1请求返回的ck
变量 ok1CK 为 文本型
事件 窗口创建完毕()
' 创建上方定义的两个对象
ok网络操作1 = 创建 OK网络操作()
ok网络操作2 = 创建 OK网络操作()
' 设置两个对象的 ck 管理模式
ok网络操作1.置Cookie管理模式(2)
ok网络操作2.置Cookie管理模式(2)
' 初始化编辑框
编辑框_1.提示文本 = "请点击按钮测试..."
编辑框_1.单行输入 = 假
结束 事件
事件 按钮_发送请求1.被单击(来源对象 为 视图)
ok网络操作1.执行Get请求("ok1_get1","http://www.vcnstudio.com",空,接收请求结果)
结束 事件
' 定义“接收请求结果”的匿名回调,说简单点就是:统一接收请求完毕回调的事件 ,比单个“事件”语句块更方便统一管理
定义 接收请求结果 为 OK网络操作.文本请求回调接口
事件 请求成功(响应对象 为 OK网络请求响应)
如果(响应对象 == 空)
返回
结束 如果
变量 请求标记 = 到文本(响应对象.取请求标记())
如果(请求标记 == "ok1_get1")
' 返回的ck被放在响应头里面的,我们先打印出是否有ck,一般名称叫:Set-Cookie
编辑框_1.内容 = "OK1_GET1响应头内容" + 换行符 + 响应对象.取响应头文本()
' 取出请求1返回的 ck
ok1CK = 响应对象.取响应头文本值("Set-Cookie")
' 将ok1返回的ck,交给ok2请求
变量 ok2请求头 = 创建 OK网络请求头()
ok2请求头.添加属性("Cookie",ok1CK)
' 发送请求
ok网络操作2.执行Get请求("ok2_get2","http://www.vcnstudio.com",ok2请求头,接收请求结果)
否则 如果(请求标记 == "ok2_get2")
编辑框_1.追加文本行("ok2_get2 响应内容:" + 换行符 + 响应对象.取响应体())
结束 如果
结束 事件
' 当绑定该回调结果的请求失败时该事件会被触发
事件 请求失败(响应对象 为 OK网络请求响应)
变量 msg = "请求失败;" + 响应对象.取请求标记() + 换行符 + 响应对象.取响应体()
编辑框_1.内容 = msg
结束 事件
' 该事件为当使用 POST 访问并且上传文本的时候使用、GET访问用不到;留空即可;但是不能删除
事件 上传进度被改变(请求进度对象 为 OK网络请求进度)
结束 事件
结束 定义
事件 按钮_2.被单击(来源对象 为 视图)
若(取空(ok1CK) == 真) 弹出提示("请先发送请求1获取返回的ck再操作!"); 返回
' 将ok1返回的ck,交给ok2请求
变量 ok2请求头 = 创建 OK网络请求头()
ok2请求头.添加属性("Cookie",ok1CK)
' 发送请求
ok网络操作2.执行Get请求("ok2_get2","http://www.vcnstudio.com",ok2请求头,接收请求结果)
结束 事件