我正在尝试在WebRequest Activity
中进行POST,但如果我选择JSON格式,则正文总是空的:
我尝试过转义和转义字符,包括和不包含引号和空格等:
{\"value\": [{\"@search.action\": \"delete\",\"id\": \"abc-008\"}]}
和
{value:[{@search.action: delete,id: abc-008}]}
但formValues
始终为空:
var formValues = activityContext.GetState<string>("FormValues") ?? "";
如果我选择Key / Value作为格式但是我需要Json,请求正常。
编辑:应该添加我尝试了有效的Json格式(JsonLint)以及我给出的示例,有空格和使用'而不是'但它仍然是空的。
答案 0 :(得分:1)
快速修复:
(( "value": [(( "@search.action": "delete", "id": "abc - 008" ))] ))
说明:这实际上是Orchard如何在工作流程中处理令牌的尴尬副作用。拿一小撮盐,因为我的记忆力不好,但我认为它是这样的。因此,在将数据发送到各个工作流活动之前,工作流模块将执行存储的令牌。这意味着所有存储的JSON都会被丢弃,因为Orchard认为它是一个令牌(Orchard令牌的格式为:{Content.Body}等)并尝试执行它。我在尝试将复杂对象存储在工作流活动中时发现了这一点,并且不得不解决这个问题。我的意思是把它报告为一个问题,但我想我忘了(我的坏),但看到这个让我觉得它真的是一个错误。那么为什么上面的工作呢?一些自私的天才显然遇到了这个问题并用这个黑客行更新了代码:
var json = formValues.Replace("((", "{").Replace("))", "}");
然后离开用户界面说:
对于JSon,输入有效的JSon字符串
大规模失败。
为了纠正我之前的懒惰,我已经为此创建了两个问题。 https://github.com/OrchardCMS/Orchard/issues/7760 https://github.com/OrchardCMS/Orchard/issues/7759
答案 1 :(得分:0)
两种给定的Json格式都无效。你尝试过简单的格式吗?
{&#34; value&#34;:[{&#34; @ search.action&#34;:&#34; delete&#34;,&#34; id&#34;:&#34; abc - 008&#34; }]}