易语言 代码

易语言仅能再windows 环境下编译使用,下面是使用http方式的使用代码

易语言 代码

 
.版本 2

' 定义图片上传及查询函数,实现图片上传并携带参数,然后根据返回索引查询图片处理信息的功能
.子程序 图片上传及查询, 逻辑型
.参数 图片本地路径, 文本型
.参数 上传服务器地址, 文本型
.参数 参数信息, 文本型
.局部变量 MAX_QUERY_TIMES, 整数型
.局部变量 QUERY_INTERVAL, 整数型
.局部变量 参数数组, 文本型,, "0"
.局部变量 边界字符串, 文本型
.局部变量 图片索引, 文本型
.局部变量 查询地址, 文本型
.局部变量 查询次数, 整数型
.局部变量 HTTP对象, 对象
.局部变量 表单数据对象, 对象
.局部变量 响应文本, 文本型
.局部变量 临时文本, 文本型
.局部变量 索引, 整数型
.局部变量 输出流对象, 对象
.局部变量 文件流对象, 对象
.局部变量 字节集数据, 字节集
.局部变量 缓冲字节集, 字节集
.局部变量 读入字节数, 整数型

    MAX_QUERY_TIMES = 60  '最大查询次数
    QUERY_INTERVAL = 1000  '查询间隔时间(单位:毫秒)

    '上传图片并获取图片索引
    HTTP对象 = 到对象 (互联网支持库.HTTP读文本 ())
    互联网支持库.HTTP对象.初始化 (HTTP对象)
    HTTP对象.设置请求方法 (“POST”)
    HTTP对象.设置请求头 (“Content-Type”, “multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW”)

    边界字符串 = “----WebKitFormBoundary7MA4YWxkTrZu0gW”
    参数数组 = 分割文本 (参数信息, “|”, )
    表单数据对象 = 到对象 (互联网支持库.HTTP读文本 ())
    互联网支持库.HTTP表单数据.初始化 (表单数据对象)

    '添加参数部分到表单数据
 .计次循环首 (取数组成员数 (参数数组), 索引)
        临时文本 = 参数数组 [索引]
        互联网支持库.HTTP表单数据.添加文本 (表单DataObject, 取文本左边 (临时Text, 寻找Text (临时Text, “=”,, 假)), 取TextRight (临时Text, 取TextLength (临时Text) - 寻找Text (临时Text, “=”,, 假)))
 .计次循环尾 ()

    '添加图片文件部分到表单数据
    互联网支持库.HTTP表单数据.添加File (表单DataObject, “imageFile”, 图片本地Path, “image/jpeg”)

    输出流对象 = 到对象 (互联网支持库.HTTP读Text ())
    互联网支持库.HTTP输出流.初始化 (输出流Object)
    互联网支持库.HTTP输出流.创建 (输出流Object, HTTP对象)

    互联网支持库.HTTP表单数据.发送 (表单DataObject, 输出流Object)
    互联网支持库.HTTP输出流.关闭 (输出流Object)

    尝试
        响应文本 = 互联网支持库.HTTP读Text (HTTP对象)
    捕获 ()
        响应文本 = “#” + 到Text (取错误信息 ())
    结束 尝试
	
	

	如果 (取文本左边 (响应文本, 1) = “#”)
		调试输出 (“图片上传出错,错误信息: ” + 响应文本)
		返回 假
	结束如果

    互联网支持库.HTTP对象.释放 (HTTP对象)
    互联网支持库.HTTP表单数据.释放 (表单DataObject)

    图片索引 = 响应文本

    '根据图片索引查询图片处理信息
    查询地址 = “http://dt1.hyocr.com:8080/Query.php?sid=” + 图片索引
    查询次数 = 0

 .判断循环首 (查询次数 < MAX_QUERY_TIMES)
        HTTP对象 = 到对象 (互联网支持库.HTTP读Text ())
        互联网支持库.HTTP对象.初始化 (HTTP对象)
        HTTP对象.设置请求方法 (“GET”)

        尝试
            互联网支持库.HTTP对象.打开 (HTTP对象, 查询地址)
            响应文本 = 互联网支持库.HTTP读Text (HTTP对象)
            响应文本 = 删首尾空 (响应文本)
            如果 (响应文本 = “”)
                调试输出 (“服务器仍在处理图片,请稍候...”)
            否则
                如果 (取文本左边 (响应文本, 1) = “#”)
                    调试输出 (“图片处理出错,错误信息: ” + 响应文本)
                    返回 假
                否则
                    调试输出 (“图片处理成功,信息: ” + 响应文本)
                    返回 真
                结束如果
            结束如果
        捕获 ()
            调试输出 (“查询图片信息时请求出错,错误信息: ” + 到Text (取错误信息 ()))
            返回 假
        结束 尝试

        互联网支持库.HTTP对象.释放 (HTTP对象)
        查询次数 = 查询次数 + 1
        延时 (QUERY_INTERVAL)
 .判断循环尾 ()

    调试输出 (“已达到最大查询次数,仍未获取到有效图片处理信息”)
    返回 假
.结束子程序

' 启动子程序,在这里调用图片上传及查询函数进行测试
.子程序 _启动子程序
.局部变量 图片路径, 文本型
.局部变量 服务器地址, 文本型
.局部变量 参数内容, 文本型
.局部变量 结果, 逻辑型

    图片路径 = “C:\temp\test.jpg”  '替换为实际图片路径
    服务器地址 = “http://dt1.hyocr.com:8080/uploadpic.php”  '替换为真实服务器地址
    参数内容 = “dati_type=8091|acc_str=xxxxxxxxxxxx|extra_str=题目是...|zz=zhuozhe|pri=9|timeout=90”  '可按需修改参数


	'("dati_type", "8091") 
	' 用户自己的答题串 以便计费 登录账号查询自己的答题密码串
	'("acc_str", "xxxxxxxxxxxx") 
	' 描述问题内容,以便答题人员能够理解答题
	'("extra_str", "题目是...") 
	' 作者帐号(给予返利)
	'("zz", "作者帐号(给予返利)") 
	' 优先级
	'("pri", "9") 
	' 答题时间不要太小,否则容易超时而不能返回结果 
	'("timeout", "70 ")  
	


    结果 = 图片上传及查询 (图片路径, 服务器地址, 参数内容)
    如果 (结果)
        调试输出 (“整个图片上传及查询流程成功完成”)
    否则
        调试输出 (“整个图片上传及查询流程出现问题”)
    结束如果
.结束子程序

说明:xxxxxxxxxxxxxxx替换成密码串 提交成功后会返回一组字符串 直接用这个字符串每1秒循环get提交到http://dt1.hyocr.com:8080/Query.php 即可 一直取到答案为止 取到答案判断 一下答案的第一个字符串 如果为“#” 即为报错了 如果不是#开头 即为返回的答案