【问题标题】:how to post json object in apigee baas using titanium studio如何使用钛工作室在 apigee baas 中发布 json 对象
【发布时间】:2015-03-03 12:24:16
【问题描述】:
var jsonobj = { "username" : "cat" };

var client=Ti.Ui.createHttpClient({
    onload:{ },
    onerror : { }   
});

client.open('POST',api.usergrid.com/serv-d/demo1/logs);
client.send(jsonobj);

详情: jsonobj 是要在 apigee baas 中发布的 json 对象。 client.open 有 apigee baas 的 url。 client.send 发送 json 对象。

【问题讨论】:

  • 又是什么问题?

标签: json titanium


【解决方案1】:

您需要将数据作为 JSON 有效负载发送,而不是像现在发送的那样以 url 编码的 POST 字段形式发送。您只需要将 content-type 设置为 json。

var client = Ti.Ui.createHttpClient({
    onload:{ },
    onerror : { }   
});

client.setRequestHeader('content-type', 'JSON');
client.open('POST',api.usergrid.com/serv-d/demo1/logs);
client.send(JSON.stringify(jsonobj));

【讨论】:

  • 但我在代码中传递的值在 apigee baas 中不正确。这是我在 titamiun var uname = tname.value.toString(); 中的代码var pass = tsurname.value.toString(); var jsonobj = { "用户名" : ' " ' + uname + ' " ', "密码" : ' " ' + pass + ' " ' };
【解决方案2】:

我认为你的 jsonobj 应该是:

var jsonobj = {username: uname, password: pass};

因为JSON.stringify() 将负责对其进行字符串化。

【讨论】:

  • 我也试过这个选项,但我不工作。 Apigee baas 不接受这种格式的对象。没有值被插入到 baas 中。
  • 那它需要什么值?
  • 它需要使用引号发送值...例如 var obj = {"username" : "uname",}
  • 它需要使用引号发送值.. 例如 var obj = {"username" : "uname", "password" : "pass"};我正在尝试发送此值,但正在传递空白值。
  • 但这正是JSON.stringify 将为您做的事情。它将添加这些引号,因为上面的 requestb.in 也显示了。如果你添加它们然后执行 JSON.stringify 你会得到双倍的。
【解决方案3】:

让我们做一些测试:

var client = Ti.Network.createHTTPClient();
client.open('POST', 'http://requestb.in/1b1yblv1');
client.send(payload);

与:

var payload = {username: "cat"};

http://requestb.in/1b1yblv1?inspect 你看:

username=cat

与:

var payload = JSON.stringify({username: "cat"});

它是:

{"username":"cat"}

所以这就是你需要的对吗?

【讨论】:

  • sry 我试过这个解决方案仍然无法正常工作。谢谢
猜你喜欢
  • 2015-05-13
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
相关资源
最近更新 更多