来自West Wind的文档说您可以使用application / json格式发布数据:
https://west-wind.com/webconnection/docs/_2110q21c9.htm
但是在使用它时,实际上它会做一个http get而不是post:
DO wwhttp
oHTTP = CREATEOBJECT(" wwHttp&#34)
oHTTP.nHTTPPostMode = 8 oHttp.cContentType =" application / json" oHTTP.AddPostKey("名称"" somename&#34) lcURL =" https://mywebserver.com/" lcXML = oHTTP.HTTPGet(lcURL)
如果使用nHTTPPostMode = 1或2,则http请求参数未正确格式化为json。如果我更改为4,则会再次使用Get而不是Post。无论如何要解决这个问题吗?
答案 0 :(得分:1)
发布JSON数据时,您需要发布JSON 文档,而不是像示例中那样发布键值对。基本上,您需要提供完整的内容 - 整个JSON文档作为字符串 - 您要发送到服务器(就像示例所示)。
发布JSON文档如下所示:
DO wwHttp
oHTTP=CREATEOBJECT("wwHttp")
oHttp.cContentType = "application/json"
lcJson = "{ name: 'somename' }"
oHTTP.AddPostKey(lcJson) && this sets the entire post buffer
lcURL = "https://mywebserver.com/"
lcXML = oHTTP.HTTPGet(lcURL)
使用名称值对仅适用于URLEncoded或Multipart文档的POST缓冲区 - 每种其他类型的内容都作为您必须提供的原始数据发送。
如果要在程序控制下创建JSON文档,可以使用wwJsonSerializer类(也是客户端工具的一部分)序列化数据。它可以从对象,数组/集合和游标序列化。