我有这个代码,我尝试通过API在我的网上商店列出我的所有文章(文档http://api.textalk.se/webshop/)
我做了类似的脚本女巫接受来自相同API的订单,它工作得很完美,但我不会开始工作。
任何想法我做错了什么?
<?php
class TextalkApi
{
public function AdminLogin($username, $password) {
$url = 'https://shop.textalk.se/backend/jsonrpc/v1/';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch,CURLOPT_HTTPHEADER, array('Content-Type: application/json-rpc'));
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"jsonrpc":"2.0", "id":1, "method":"Admin.login", "params":["' . $username . '","' . $password . '"]}');
$data = json_decode(curl_exec($ch), true);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($http_code != 200)
throw new Exception('Error : Admin Login Failed');
return $data['result'];
}
public function GetArts($admin_auth_token, $webshop_id) {
$url = 'https://shop.textalk.se/backend/jsonrpc/v1/?auth=' . $admin_auth_token . '&webshop=' . $webshop_id;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch,CURLOPT_HTTPHEADER, array('Content-Type: application/json-rpc'));
// this below i beleive dosen't work
curl_setopt($ch, CURLOPT_POSTFIELDS,
'{"jsonrpc":"2.0","method":"Article.list", {"limit": 5}],"id":1}');
// this above i beleive dosen't work
$data = json_decode(curl_exec($ch), true);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($http_code != 200)
throw new Exception('Error : Failed to get orders');
return $data['result'];
}
}
?>
在这个POSTFIELD中,我写下了#34; //在下面,我相信,工作&#34;我想把这个放得正确
Article.list(true, {"limit": 5})
请参阅文档http://api.textalk.se/webshop/interface/TryIt/
在我看起来像这样的其他PHP文件中,我希望输出结果
<?php
require_once('the_file_with_the_class_TextalkApi.php');
$textalk = new TextalkApi();
//Working demo credentials
$admin_auth_token = $textalk->AdminLogin('pon85x@gmail.com', 'abc123');
$webshop_id = '77140';
$arts = $textalk->GetArts($admin_auth_token, $webshop_id);
echo '<pre>';print_r($arts);echo '</pre>';
var_dump($arts);
?>
但结果是NULL
答案 0 :(得分:0)
在第5行,你没有验证$ username / $ password是字符串(如果是的话,你应该提出InvalidArgumentException&#39;
第13行,你不是json-encoding $ username / $ password
在第14行,你在第19行使用它作为数组之前,你没有验证json解码实际上是否成功。
在第23行,您没有再次验证输入参数,并且您不是url编码$ admin_auth_token也不是$ webshop_id
在第33行,您正在发送一个带有迷路{j}的无效编码的json {/ 1}
在第36行,您在第41行使用它作为数组之前,并未验证json解码是否实际成功。
并且在整个代码中,您没有捕获任何潜在的卷曲错误,如果设置选项时出错,curl_setopt会返回bool(false), 如果在传输过程中出现问题,curl_exec将返回bool(false),您的代码将完全忽略该问题。尝试使用一个错误捕获的curl_setopt包装器,如
]
并检查curl_exec是否返回false