注册 登录
编程论坛 VFP论坛

VFP用POST方式传递JOSN数据 参数值为数组,要怎么传递!

dccal 发布于 2021-07-21 19:50, 1946 次点击
接口地址:https://zbtest.

 请求方式:post
 请求参数:
参数名称    参数说明    请求类型    是否必填写    数据类型
token    令牌    Body    是    String
type    类型(1新增2修改)    Body    是    String
form    提交数据    Body    是    Array
Form[“username”]    用户账号        是    String
form[“password”]    密码        是    String
form[“mobile”]    手机号        是    String

请求示列
{
    "token": "   要先下载下来TOKEN值 ",
    "type": 1,
    "form": {
        "username": "richad2",
        "password": "admin123",
        "mobile": "18702599999"
    }

}
返回码
状态码    说明
0    成功
1    参数错误
90003    token已过期
90004    用户信息错误(注3)

响应参数

参数名    参数说明    参数类型    是否必有
success    接口请求状态(true成功,false失败)    String    false
msg    提示    String    true
Code    状态码    Number    true
data    数据数组    Array    false
{
    "success": true,
    "msg": "创建成功",
    "code": 0
}

8 回复
#2
dccal2021-07-21 19:54
lc_post_chr_OK = "" &&这是你要发送的值

Set Library To ("c:\myfll")
lc_return = HttpPostData("http://api.....com/Handle.aspx", (lc_post_chr_OK))
Set Library To

If Vartype(lc_return) = "C"
lc_return = STRCONV(lc_return, 11) &&转回UNICODE
MessageBox(lc_return,"发送到服务器成功!")
ELSE
MessageBox("发送到服务器失败!")
EndIf
#3
dccal2021-07-21 19:55
试过网上这种方法,没法把数组JOSN数据转成lc_post_chr_ok
#4
吹水佬2021-07-22 11:48
以下是引用dccal在2021-7-21 19:50:23的发言:

    "token": "   要先下载下来TOKEN值 ",

在哪下载TOKEN值?
程序代码:
cUrl = "https://zbtest./web/index.php?r=clientApi%2Fcreate-user%2Findex"
TEXT TO cData TEXTMERGE NOSHOW PRETEXT 15
{
    "token":"没有TOKEN值,失败",
    "type":1,
    "form":{
        "username":"richad2",
        "password":"admin123",
        "mobile":"18702599999"
    }
}
ENDTEXT
oHttp = CREATEOBJECT("MSXML2.XMLHTTP")
oHttp.Open("POST", cUrl, 0)
oHttp.setRequestHeader("content-type", "application/json")
oHttp.Send(cData)
cTxt = oHttp.ResponseText
? cTxt
RETURN
#5
sdta2021-07-22 12:49
cUrl = "https://zbtest.
oHttp = CREATEOBJECT("MSXML2.XMLHTTP")
oHttp.Open("GET", cUrl, .F.)
oHttp.Send()
cTxt = oHttp.ResponseText
? cTxt
#6
dccal2021-07-22 15:26
回复 4楼 吹水佬
https://zbtest.  获取TOKEN
#7
sdta2021-07-22 16:23
cUrl = "https://zbtest.
oHttp = CREATEOBJECT("MSXML2.XMLHTTP")
oHttp.Open("GET", cUrl, .F.)
oHttp.Send()
cTxt = oHttp.ResponseText
? cTxt
#8
吹水佬2021-07-22 16:39
以下是引用dccal在2021-7-22 15:26:08的发言:

https://zbtest.  获取TOKEN

TEXT TO cData TEXTMERGE NOSHOW PRETEXT 15
{
    "token":"hKQCWoHJFTFG_oO9xPWHP5dzySCZzv0sHmrbUDNqbh3xgZiMypBgm7QCD-C2v0N-w16-iXX2enJmtteBtXrsJc00AFkIcJZYkghWSdmL85OgBAr-9FvNnryHiQIncukmqJZRDp-tTkhfugqywTY-sfAnV3DH4N_8xOFcpEOvFq-rzRorWL00UA9XKZS4rr7yp1aq0jQ3goeMdE73PN3qQcIYFgDU47mAQ9wTulh3bW0VzCvfMQM4tdvCxpRUUJvADLzz5OvoNU8Vp0uTp2c8qJ1-fm2POA==",
    "type":1,
    "form":{
        "username":"richad2",
        "password":"admin123",
        "mobile":"18702599999"
    }
}
ENDTEXT
结果返回:
{"success":false,"msg":"\u7528\u6237\u4fe1\u606f\u9519\u8bef\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458","code":90004}
"msg":"用户信息错误请联系管理员"
#9
dccal2021-07-22 16:57
搞定了,谢谢吹水大师
程序代码:

LOCAL cAppUserName,cAppPassWord,cAppNickname
cAppUserName=ALLTRIM(THisform.TextAppName.Value)
cAppPassWord=ALLTRIM(THisform.TextAppPassWord.Value)
cAppNickname=ALLTRIM(THisform.TextAppNickname.Value)
IF !EMPTY(THisform.TextAppName.Value ) AND !EMPTY(THisform.TextAppPassWord.Value)  AND !EMPTY(THisform.TextAppNickname.Value)
    oXmlHttp=CREATEOBJECT("Msxml2.XMLHTTP.6.0") &&      ServerXmlHttp
    IF  !TYPE("oXmlHttp") ='O'
        =MESSAGEBOX("创建对象oXmlHttp失败,请查看是否安装了>=MSXML6.0控件!",16,"msXml2实验")
        RETURN .f.
    ELSE
            ls_url="https://zbtest./web/index.php?r=clientApi%2Fcreate-user%2Fadd-staff"
            ctoken= thisform.token
            SET TEXTMERGE  ON
            TEXT TO lcJsonText TEXTMERGE NOSHOW PRETEXT 15
            {
                "token": "<<ctoken>>",
                "form":{
                    "username":"<<cAppUserName>>",
                    "password":"<<cAppPassWord>>",
                    "nickname":"<<cAppNickname>>",
                    "rolesid": 1
                }
            }
            ENDTEXT
            
        =MESSAGEBOX(lcJsonText)
        THisform.ls_URL.value= lcJsonText

        oXmlHttp.Open("POST",ls_url ,0)
        oXmlHttp.setRequestHeader("Content-Type","application/json")
        oXmlHttp.send(lcJsonText)
1