1

请保存我的堆栈溢出.. 我祈祷有人使用 API 注册了参与者(并提交了自定义问题的答案)。

好的,首先,这是创建注册人的文档:

POST https://api.citrixonline.com/G2W/rest/organizers/73563532324/webinars/89... HTTP/1.1
Accept: application/json
Accept: application/vnd.citrix.g2wapi-v1.1+json
Content-Type: application/json
Authorization: OAuth oauth_token={oauthToken}

{
  "firstName":"Saumil",
  "lastName":"Jhaveri",
  "email":"test@test.com",
  "address":"650+Townsend+St,+St.+325",
  "city":"San+Francisco",
  "state":"California",
  "zipCode":"94103",
  "country":"United+States",
  "phone":"3123751884",
  "industry":"Accounting",
  "organization":"Citrix",
  "jobTitle":"Software+Engineer",
  "purchasingTimeFrame":"13+months",
  "roleInPurchaseProcess":"Decision+Maker",
  "numberOfEmployees":"120",
  "questionsAndComments":"No+Comments!",
  "responses":[
    {
      "questionKey":152,
      "responseText":"Fantastic!"
    }, {
      "questionKey":151,
      "answerKey":152
    }
  ]
}

因此,正如您从上面的 json rest 示例中看到的那样,REST 主体需要是一个数组,用于存储“正常”值,例如姓名、电子邮件等……

如果您查看示例底部附近,您会在该数组中看到一个数组,称为响应。

此数组包含自定义问题 ID 和用户响应的数组。

那么当只有一个自定义问题时会发生什么?

我努力了:

array('firstName' => $fname, 'lastName' => $lname, 'email' => $em, 
'responses' => array('questionKey' => 300000000000042400, 'responseText' => $custom));

并且还尝试了(即使只有一个问题,也尝试了一组数组):

array('firstName' => $fname, 'lastName' => $lname, 'email' => $em, 
'responses' => array(array('questionKey' => 300000000000042400, 'responseText' => $custom)));

如果我对我的数据运行 json_encode,这是输出

{
   "firstName":"Ellis",
   "lastName":"Ryan",
   "email":"ryanthecloser@gmail.com",
   "responses":[
      {
         "questionKey":3.0e+17,
         "responseText":"http:\/\/facebook.com\/doubleyourlikes"
      }
   ]
}

当我输入这个问题时,我想我看到了这个问题......我的 json 数据(更具体地说是 questionkey)正在转换为科学记数法......我尝试将 questionKey 作为字符串提交,但这不起作用......

我希望科学记数法是问题所在。任何人都知道如何在 php 中制作这么大的数字:300000000000042400

并且能够在没有数字转换的情况下进行 encode_json 吗?或者,如果有人使用 api 成功获得了为注册人显示的自定义问题回复,请告诉我!

提前致谢!

4

2 回答 2

4

将 questionKey 作为字符串传递是 100% 没问题的,所以问题就消失了……

我的问题实际上是有两个版本的创建注册人:

版本一:接受姓名和电子邮件并丢弃其他所有内容 版本二:添加
接受:application/vnd.citrix.g2wapi-v1.1+json

到标题以选择第二个版本。第二个版本允许自定义字段。

因为我没有包含额外的标头参数,所以我的自定义字段数据被丢弃了!

Grrrr 我在文档中阅读了无数次...... RTM!,并按照它所说的去做,哈哈!

于 2012-06-05T16:17:41.873 回答
0

为了使 LARGE 整数保持为数字,您要么必须将 PHP 更新到版本 5.4+ 并使用类似的东西

$response = curl_exec( $ch );

$json = json_decode( $response, true, 512, JSON_BIGINT_AS_STRING );

或者

$response = curl_exec( $ch );

$response = preg_replace('/("\w+"):(\d+)/', '\\1:"\\2"', $response );  # quote the number
$json = json_decode( $response );
于 2013-12-11T23:06:31.267 回答