蜂玩API

蜂蜂帮玩HTTP REST API接口说明


2、上传图片

<p>[TOC]</p> <h4>简要描述</h4> <p>&gt; 上传图片,获取任务流水编号tid(task id)</p> <h4>请求URL</h4> <ul> <li><code>{host}/upload.sa</code></li> </ul> <p>&gt; <strong>{host}</strong> 为第1步获取到的上传图片地址,需要留存到全局变量。建议在一定时间(3小时+)或一定次数(100+)后重新获取,更新全局变量。</p> <h4>请求方式</h4> <ul> <li><code>POST</code></li> </ul> <h4>请求编码</h4> <ul> <li><code>UTF-8</code></li> </ul> <h4>请求包头</h4> <p>&gt; 请求包头即 HTTP Request Header</p> <ul> <li>default 默认方式,二进制图片格式,formdata表单方式:</li> </ul> <p><code>Content-Type: multipart/form-data; boundary=fengwanfieldboundary; charset=utf-8</code></p> <ul> <li>base64 图片格式,urlencoded表单方式:</li> </ul> <p><code>Content-Type: application/x-www-form-urlencoded; charset=utf-8</code></p> <ul> <li>16 (进制)图片格式,urlencoded表单方式:</li> </ul> <p><code>Content-Type: application/x-www-form-urlencoded; charset=utf-8</code></p> <h4>参数</h4> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">必选</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">uploadtype</td> <td style="text-align: left;">否</td> <td style="text-align: left;">string,字符串</td> <td>上传图片方式,default(默认)、base64 、16(进制)</td> </tr> <tr> <td style="text-align: left;">ascii</td> <td style="text-align: left;">否</td> <td style="text-align: left;">int,整数型</td> <td>是否将返回内容的中文进行escape编码,默认不编码、为1时进行编码</td> </tr> <tr> <td style="text-align: left;">ver</td> <td style="text-align: left;">是</td> <td style="text-align: left;">int,整数型</td> <td>上传api版本号,自写接口应设为 202306</td> </tr> <tr> <td style="text-align: left;">userstr</td> <td style="text-align: left;">是</td> <td style="text-align: left;">string,字符串</td> <td>用户密码串,注意如果密码串使用了“密码串功能”,应该对该字段进行URL Encode UTF-8 编码,建议进行编码</td> </tr> <tr> <td style="text-align: left;">gameid</td> <td style="text-align: left;">是</td> <td style="text-align: left;">string,字符串</td> <td>题目类型,需在 <a href="https://feng.suanst.com/gameid.htm">https://feng.suanst.com/gameid.htm</a> 查询题目对应的编号</td> </tr> <tr> <td style="text-align: left;">timeout</td> <td style="text-align: left;">是</td> <td style="text-align: left;">int,整数型</td> <td>题目超时秒数,可取值范围:20~300</td> </tr> <tr> <td style="text-align: left;">beizhu</td> <td style="text-align: left;">否</td> <td style="text-align: left;">string,字符串</td> <td>图片的备注信息,应该对该字段进行URL Encode UTF-8 编码,否则可能无法正常解析中文内容</td> </tr> <tr> <td style="text-align: left;">softkey</td> <td style="text-align: left;">是</td> <td style="text-align: left;">string,字符串</td> <td>软件KEY,需在“开发者信息”中查询自己的软件KEY,不能留空</td> </tr> <tr> <td style="text-align: left;">kou</td> <td style="text-align: left;">否</td> <td style="text-align: left;">int,整数型</td> <td>自定义扣分,当客户在可返利情况下,获取返利糖果。取值范围:0~100</td> </tr> <tr> <td style="text-align: left;">img(default)</td> <td style="text-align: left;">是</td> <td style="text-align: left;">binary,二进制</td> <td>图片二进制数据</td> </tr> <tr> <td style="text-align: left;">img(base64)</td> <td style="text-align: left;">是</td> <td style="text-align: left;">string,字符串</td> <td>图片base64编码后的数据,注意如果在使用的http post接口不会自动UTF-8编码的情况下,应该将base64编码内的“+”替换为“%2b” &lt;br&gt;(附:易语言精易模块的“网页_访问S”需要进行“文本_替换”)</td> </tr> </tbody> </table> <h4>发包格式(default)</h4> <ul> <li>ps:每行后面带回车换行\r\n,不可仅带换行符\n</li> </ul> <pre><code class="language-js">--fengwanfieldboundary Content-Disposition: form-data; name=&amp;quot;ascii&amp;quot; --fengwanfieldboundary Content-Disposition: form-data; name=&amp;quot;ver&amp;quot; 202306 --fengwanfieldboundary Content-Disposition: form-data; name=&amp;quot;userstr&amp;quot; fengwan123|BDC44CF198768A --fengwanfieldboundary Content-Disposition: form-data; name=&amp;quot;gameid&amp;quot; 1001 --fengwanfieldboundary Content-Disposition: form-data; name=&amp;quot;timeout&amp;quot; 300 --fengwanfieldboundary Content-Disposition: form-data; name=&amp;quot;beizhu&amp;quot; %E5%A4%87%E6%B3%A8 --fengwanfieldboundary Content-Disposition: form-data; name=&amp;quot;softkey&amp;quot; 1001|9A42B0F1BD994C75 --fengwanfieldboundary Content-Disposition: form-data; name=&amp;quot;kou&amp;quot; 0 --fengwanfieldboundary Content-Disposition: form-data; name=&amp;quot;img&amp;quot;; filename=&amp;quot;C:\yzm.jpg&amp;quot; Content-Type: image/jpeg (ps:这里也是一个回车换行\r\n) ?? JFIF  ` ` ? C    (ps:图片二进制内容,内容结束后需要+回车换行\r\n) --fengwanfieldboundary--</code></pre> <h4>发包格式(base64)</h4> <pre><code class="language-vb">&amp;quot;为便于观看,对每个字段值后增加了换行,实际发包不需要回车换行符&amp;quot; uploadtype=base64 &amp;amp;ascii= &amp;amp;ver=202306 &amp;amp;userstr=myid|JWA2DSAKZDZ2 &amp;amp;gameid=1001 &amp;amp;timeout=50 &amp;amp;beizhu=%e5%a5%bd%e7%88%b1 &amp;amp;softkey=1001|9A42B0F1BD994C75 &amp;amp;kou=0 &amp;amp;img=iVBORw0KGgoAAAANSUhEUgAAAL8AAACWCAIAAAAAK86vAAAABmJLR0QA/wD/AP%2bgvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nOx9d7wcV3X/95apO9teVZds4d4wuMSVbgeIDSaYltBLQgmQYKrpYIgpoToU2/yAECBATEkoxgbcwQWMLeMi2VaXXtm%2b0%2bfee35/zHtPT7YFEsECPh/OG93P7mh2duac75xz7il3YfseA576N2dGg3ba2X7rjTee%2buTn7oxJGcpTHUd5FKd7vRX9vo5DUnnRa83GUZ6m6fs/8Ja3vftfLr/uhvPee8GPr//ZU8896%2bDDj/r3iz4/mJkilZ3/7vd/9T%2b/QUlIeb6tkz/rpa8x8fS9t9/w12c/b9O2HmWD8171oh/c%2bMutOX32cxe/5XX/SNnUf3z2A9/8yhfOO%2b9... &amp;quot;(图片base64编码后的内容较长,仅截取了部分)&amp;quot;</code></pre> <h4>发包格式(16)</h4> <pre><code class="language-vb">&amp;quot;为便于观看,对每个字段值后增加了换行,实际发包不需要回车换行符&amp;quot; uploadtype=16 &amp;amp;ascii= &amp;amp;ver=202306 &amp;amp;userstr=myid|JWA2DSAKZDZ2 &amp;amp;gameid=1001 &amp;amp;timeout=50 &amp;amp;beizhu=%e5%a5%bd%e7%88%b1 &amp;amp;softkey=1001|9A42B0F1BD994C75 &amp;amp;kou=0 &amp;amp;img=ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789... &amp;quot;(图片16进制字符串后的内容较长,仅截取了部分)&amp;quot;</code></pre> <h4>返回包头</h4> <p>&gt; 返回包头即 HTTP Response Header</p> <ul> <li><code>Content-Type: application/json</code></li> </ul> <h4>返回示例</h4> <pre><code>&amp;quot;为便于观看,对每个字段进行了格式化,实际返回内容无回车换行Tab符&amp;quot; { &amp;quot;error&amp;quot;: 0, &amp;quot;errmsg&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;warn&amp;quot;: 1, &amp;quot;warnmsg&amp;quot;: &amp;quot;1001软件KEY仅供测试,有每小时的用量限制&amp;quot;, &amp;quot;tid&amp;quot;: &amp;quot;1001_31_12031103_5bd854e9d28f&amp;quot;, &amp;quot;msg&amp;quot;: &amp;quot;上传成功&amp;quot; }</code></pre> <h4>返回参数说明</h4> <table> <thead> <tr> <th style="text-align: left;">参数名</th> <th style="text-align: left;">类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">error</td> <td style="text-align: left;">int,整数型</td> <td>是否有错误内容 1、0</td> </tr> <tr> <td style="text-align: left;">errmsg</td> <td style="text-align: left;">string,字符串</td> <td>详细错误内容,应该在明显位置提示客户,并根据返回详细错误内容调整软件发题的流程</td> </tr> <tr> <td style="text-align: left;">warn</td> <td style="text-align: left;">int,整数型</td> <td>是否有提醒内容 1、0</td> </tr> <tr> <td style="text-align: left;">warnmsg</td> <td style="text-align: left;">string,字符串</td> <td>详细提醒内容,应该显示在软件应用上,告知客户</td> </tr> <tr> <td style="text-align: left;">tid</td> <td style="text-align: left;">string,字符串</td> <td>接口返回的任务流水编号,用于下一步的 获取答案</td> </tr> <tr> <td style="text-align: left;">msg</td> <td style="text-align: left;">string,字符串</td> <td>流程无误时,返回“上传成功”,其余情况下为“”</td> </tr> </tbody> </table> <h4>异常情况判断及处理</h4> <p>&gt; 1、判断返回内容长度是否&gt;0,并且第一个字符为&quot;{&quot;,否则可能是网络或服务器出现问题,导致无法获取。应该重新再获取上传图片服务器地址HOST。 2、上述判断还可以直接判断HTTP响应Status_Code(HTTP状态代码)是否为200,200即可直接进行json解析。如果不是200,则请重新获取HOST</p> <h4>errmsg 返回内容举例</h4> <p>&gt; 1、当error为1时,errmsg显示具体详细的错误信息 2、仅包含目前的全部错误返回内容,以后可能还会增加其他错误内容</p> <pre><code>&amp;quot;题分不足&amp;quot; &amp;quot;密码串有误&amp;quot; &amp;quot;密码串不符合规则&amp;quot; &amp;quot;密码串UrlDecode失败&amp;quot; &amp;quot;软件KEY有误&amp;quot; &amp;quot;题目类型有误&amp;quot; &amp;quot;自定义扣分超过100限制&amp;quot; &amp;quot;图片数据不正确&amp;quot; &amp;quot;图片超过1MB限制&amp;quot; &amp;quot;图片小于100字节&amp;quot; &amp;quot;写入文件异常失败&amp;quot; &amp;quot;不支持的上传类型&amp;quot; &amp;quot;账号数据异常&amp;quot; &amp;quot;上传异常失败&amp;quot; &amp;quot;您的图片不属于游戏,限制使用,请联系客服审核解限&amp;quot; &amp;quot;您的图片可能不属于游戏,今日上传超限,请联系客服审核解限&amp;quot; &amp;quot;您的图片不包含游戏区域内容,今日上传超限,请联系客服审核解限&amp;quot;</code></pre> <h4>warnmsg 返回内容举例</h4> <ul> <li>本函数所有返回的 warnmsg 不会影响业务流程</li> </ul> <p>&gt; 1、当warn为1时,warnmsg显示具体详细的提醒信息 2、仅包含目前的全部提醒返回内容,以后可能还会增加其他提醒内容</p> <pre><code>&amp;quot;题分不足xxx,已微信提醒&amp;quot; &amp;quot;未绑定微信,无法提醒&amp;quot; &amp;quot;备注UrlDecode失败,已置空备注&amp;quot; &amp;quot;图片未审核通过,限制每日200条&amp;quot; &amp;quot;图片未审核通过,限制每日10条&amp;quot; &amp;quot;题号选择有误,已更改为xxxx&amp;quot; &amp;quot;1001软件KEY仅供测试,有每小时的用量限制&amp;quot; &amp;quot;账号题量异常,已被分流处理&amp;quot; &amp;quot;图片已被压缩为JPG,建议上传前压缩,加快上传图片速度&amp;quot; &amp;quot;密码串功能生效:超时已更改&amp;quot; &amp;quot;密码串功能生效:平台已更改&amp;quot; &amp;quot;密码串功能生效:题号已更改&amp;quot; &amp;quot;密码串功能生效:备注已更改 &amp;quot; &amp;quot;备注无意义,已清空&amp;quot; &amp;quot;备注不文明,已清空&amp;quot;</code></pre>

页面列表

ITEM_HTML