如何在VFP中使用West Wind发布json数据

时间:2014-11-10 17:35:15

标签: visual-foxpro foxpro westwind

来自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。无论如何要解决这个问题吗?

1 个答案:

答案 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类(也是客户端工具的一部分)序列化数据。它可以从对象,数组/集合和游标序列化。