Foxtable(狐表)用户栏目专家坐堂 → REST API 怎么获取post数据


  共有2185人关注过本帖树形打印复制链接

主题:REST API 怎么获取post数据

帅哥哟,离线,有人找我吗?
zhutangxin
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:438 积分:3771 威望:0 精华:0 注册:2016/10/14 13:40:00
REST API 怎么获取post数据  发帖心情 Post By:2020/6/19 2:32:00 [只看该作者]

老师你好,
我们一个供应商给我们提供亮灯取货的硬件,供应商在硬件PLC里写了一些程序,当在硬件上操作的时候,会主动向服务器用POST的方法提交的json数据,请问怎么获取这个json数据?
供应商的说明文档如下。问题在第2点http://server-ip/confirm-task (server-ip是Foxtable中的HttpServer的IP地址,端口只能用80)中怎么获得POST的json. 供应商说这是REST Api。



<!--[if !supportLists]-->1.       <!--[endif]-->获取作业接口(拣货单、上架单、盘点单)

Endpoint: http://server-ip/get-job?jobNo=PK0001

Methods: GET

Content-type: application/json

Return Data:

{

                id: 23456,

                jobNo: ‘PK0001’,   //纸质单上的条码:PK: 拣货单; PT: 上架单; CT: 盘点单

                tasks: [

                                {

                                                id: 12345,

                                                location: ’12-2-1’,

                                                reqQty: 15

},

                                {

                                                id: 12346,

                                                location: ’13-2-2’,

                                                reqQty: 123

}

]

}

 

<!--[if !supportLists]-->2.       <!--[endif]-->任务完成接口(在一个货位上的拣货、上架或盘点操作为一个任务)

Endpoint: http://server-ip/confirm-task

Methods: POST

Content-type: application/json

Post Data:

 

{

                id: 12345,

                type: ‘PK’,                             // PK: 拣货单; PT: 上架单; CT: 盘点单

                location: ‘12-2-1’,

                reqQty: 15,                           //请求数量

                cfmQty: 14                           //确认数量

}

 

Return Data:

{

                result: 1, //1 for success, and 0 for failed

                message: ‘error reason’

}



 回到顶部
帅哥哟,离线,有人找我吗?
zhutangxin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:438 积分:3771 威望:0 精华:0 注册:2016/10/14 13:40:00
  发帖心情 Post By:2020/6/19 2:36:00 [只看该作者]

REST Api参考:

https://blog.csdn.net/xpj8888/article/details/89487354
REST服务器(四)REST服务器POST请求:EndPoint、Method、ContentType、PostData/Json格式数据

测试工具:

http://cdn.ouapi.com//postjson_windows.zip

 回到顶部
帅哥哟,离线,有人找我吗?
zhutangxin
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:438 积分:3771 威望:0 精华:0 注册:2016/10/14 13:40:00
  发帖心情 Post By:2020/6/19 2:55:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:snipaste_2020-06-19_02-54-34.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
zhutangxin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:438 积分:3771 威望:0 精华:0 注册:2016/10/14 13:40:00
  发帖心情 Post By:2020/6/19 2:58:00 [只看该作者]

代码:

Select Case e.Path
    Case "get-job"
        Dim job As String
        job =  e.GetValues("jobNo")
        ' 纸质单上的条码:PK: 拣货单; PT: 上架单; CT: 盘点单
        Dim jobDetail As String = Functions.Execute("GetJob", job)
        e.WriteString(jobDetail)
        
    Case "confirm-task"
        'Dim url As String = "http://" & _ip & "/confirm-task"
        'Dim rqst As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(url)
        'Dim rsps As System.Net.HttpWebResponse = rqst.GetResponse
        'Dim stm As System.IO.Stream = rsps.GetResponseStream()
        'Dim reader As New System.IO.StreamReader(stm)
        'Dim str As String = reader.ReadToEnd
        'rsps.Close
        'stm.Close
        'reader.close
        'MessageBox.Show(str)
'这个地方不知道怎么获得POST DATA

        e.WriteString("{""result"":1}")          
        
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/19 8:46:00 [只看该作者]

Case "confirm-task"
msgbox(e.PlainText)
        Dim sb As New StringBuilder
        sb.AppendLine(
"
通过GET方式提交的数据:")
        For Each key As String In e.GetValues.Keys
            sb.AppendLine(key & ":" & e.GetValues(key) )
        Next
        sb.AppendLine(
"<br/><br/>
通过POST方式提交的数据:")
        For Each key As String In e.PostValues.Keys
            sb.AppendLine(key & ":" & e.PostValues(key))
        Next
        
msgbox(sb.ToString)

调试看看有没有数据

 回到顶部
帅哥哟,离线,有人找我吗?
zhutangxin
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:438 积分:3771 威望:0 精华:0 注册:2016/10/14 13:40:00
  发帖心情 Post By:2020/6/19 9:37:00 [只看该作者]

试过了,没有数据,二次Msgbox的信息如下


图片点击可在新窗口打开查看此主题相关图片如下:snipaste_2020-06-19_09-34-57.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:snipaste_2020-06-19_09-34-40.jpg
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
zhutangxin
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:438 积分:3771 威望:0 精华:0 注册:2016/10/14 13:40:00
  发帖心情 Post By:2020/6/19 9:43:00 [只看该作者]

帮助里提到了Values的二个子集,但没有提到Values的全集获取方法。帮助里的PostValues应该是表单提交数据,每个数据都有key,但硬件返回的数据是以json提交的,没有key, 所以才不知道怎么获得它。

HttpReqquest事件还有两个字典属性,他们是Values的子集:


GetValues: 字典,仅包括通过GET方式提交的数据。
PostValues:字典,仅包括通过POST方式提交的数据。


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/19 9:43:00 [只看该作者]

供应商的说明文档发上来看看

 回到顶部
帅哥哟,离线,有人找我吗?
zhutangxin
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:438 积分:3771 威望:0 精华:0 注册:2016/10/14 13:40:00
  发帖心情 Post By:2020/6/19 9:43:00 [只看该作者]

接口说明如下:

任务完成接口(在一个货位上的拣货、上架或盘点操作为一个任务)

Endpoint: http://server-ip/confirm-task

Methods: POST

Content-type: application/json

Post Data:

 

{

                id: 12345,

                type: ‘PK’,                             // PK: 拣货单; PT: 上架单; CT: 盘点单

                location: ‘12-2-1’,

                reqQty: 15,                           //请求数量

                cfmQty: 14                           //确认数量

}

 

Return Data:

{

                result: 1, //1 for success, and 0 for failed

                message: ‘error reason’

}



 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/19 9:44:00 [只看该作者]

供应商的说明文档发上来看看

 回到顶部
总数 17 1 2 下一页