我一直试图从客户端的Survey Monkey帐户中提取Survey数据,似乎它们的数据越多,就越有可能将非法字符引入到结果JSON字符串中。
下面是一个错误响应返回的示例,每个响应都是不同的,有时甚至更短的请求都失败了。
{
"survey_id": "REDACTED",
"title": "REDACTED",
"date_modified": "2014-XX-18 17:59:00",
"num_responses": 0,
"date_created": "�2014-01-21 10:29:00",
"question_count": 102
}
我不知道为什么会发生这种情况,字段选项中的参数越多,引入的非法字符就越多。这不仅是非法的无效字符,有时随机字母也被抛入,这使我无法正确地处理数据。
我正在使用Laravel 4和oori https://github.com/oori/php-surveymonkey的第三方调查猴子库
在追踪这个问题的过程中,任何帮助都是值得赞赏的,截止日期非常紧迫,如果这个问题无法解决,我将不得不要求客户端手动导入CSV文件,这并不理想,可能会导致用户错误。
在附带说明中,我没有看到这个问题出现时使用相同的参数在调查猴子控制台。
O/S: Windows8.1与WAMP服务器
用于执行请求的代码
$Surveys = SurveyMonkey::getSurveyList(array
(
'page_size' => 1000,
'fields' => array
(
'title', 'question_count', 'num_responses', 'date_created', 'date_modified'
)
));
SurveyMonkey
外观是一个自定义包,用于集成位于此处的原始调查猴子库:https://github.com/oori/php-surveymonkey/blob/master/SurveyMonkey.class.php
原始PHP cURL请求
$header = array('Content-Type: application/json','Authorization: Bearer REDACTED');
$post = json_encode(array(
'fields' => array(
'title', 'question_count', 'num_responses', 'date_created', 'date_modified'
)
));
$post = json_encode($post);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=REDACTED");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result = curl_exec($ch);
上面的请求返回相同的麻烦字符,没有其他任何东西用于获得响应。
使用以下代码
echo "\n".mb_detect_encoding($result, 'UTF-8', true);
此代码显示响应的字符集,当成功且不存在非法字符时(在错误的地方仍然存在随机字符),它返回它实际上是UTF-8,当非法字符出现时,返回false,因此不会输出任何字符。通常情况下,返回false。
发布于 2014-08-17 05:01:22
也许我过于简单化了,如果是这样的话,我很抱歉,但是我也让这些有趣的小角色出现了结果。他们在领导和尾随空格。你能整理一下检索的数据,看看是否还在发生吗?
https://stackoverflow.com/questions/25108342
复制