【发布时间】:2010-08-16 15:02:39
【问题描述】:
我正在构建一个 url 以使用 curl 执行。该网址将为我正在使用的 LMS 调用一个 api。在能够调用其他任何东西之前,您需要从 LMS 接收令牌以放入 url。我已经从 api 获得了令牌,我可以回显它并且它显示得很好,当我在将令牌附加到它之后回显 url 时,它没有显示出来。
curl_setopt($c, 'CURLOPT_RETURNTRANSFER', true);
$res = curl_exec($c);
curl_close($c);
$start = strpos($res,"<token>");
$end = $start+37;
$token = substr($res,$start+7,$end-$start);
echo "{$token}<br />";
$url = "/www/api2.php?action=create_user";
$url .= "&login=" . urlencode($username);
$url .= "&password=" . urlencode($password);
$url .= "&name=" . urlencode($data['first_name']);
$url .= "&surname=" . urlencode($data['last_name']);
$url .= "&email=" . urlencode($email);
$url .= "&languages=english";
$url .= "&token=" . $token;
echo "{$url}<br />";
echo "{$url}<br />"; 的输出
/www/api2.php?action=create_user&login=foobar3130&password=6116b3f29c&name=Foo&surname=Bar&email=foobar%40gmail.com&languages=english&token=
echo "{$token}<br />";的输出
pUCu2BUAE1heAyQ93fApfhvDE1bjKd
编辑
我添加了一个检查以查看 $start 是否为假,它是否为假。我猜它实际上不是得到回显的令牌,因为如果我注释掉那条线,我为令牌输出所拥有的字符串仍然会被打印出来。我不确定它会是什么。
编辑 2 我现在让它返回 xml,但我不知道如何解析它来获取令牌。它返回:
<xml><token>Fp1rYkds4fSuTAQxTvLvSiW5NE2FJz</token></xml>
【问题讨论】:
-
以及 echo "{$token}
" 的输出; ?? -
你在 curl_exec 之前设置了
CURLOPT_RETURNTRANSFER选项吗? -
抱歉,忘记添加那个输出了。更新。 @a1ex07 是的,我做了,我只是没有包含脚本的那部分。我得到了令牌的值。它的回声很好。
-
确保 $res 有值?它会附加所有其他内容,因此如果您没有获得 $token 的值,请确保您实际上首先为其分配了一个值。
-
我绝对物有所值。我在脚本中间打印它,它显示得很好,只是在我将它附加到 $url 后它没有显示。