我有一个php页面,它在同一台服务器上调用某些API进行身份验证,但不是同一个域,下面是代码:
$url = "http://www.mydomain.com/api.php";
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($_POST));
curl_setopt($ch,CURLOPT_POSTFIELDS, $_POST);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$result = json_decode(curl_exec($ch),true);
curl_close($ch);
它在godaddy上运行正常,没有改变任何东西,curl已启用,当我检查curl_getinfo它返回404时,这真的很奇怪,因为在浏览器中它是一个有效的URL,任何想法?
由于
答案 0 :(得分:2)
缺少cURL init方法调用。试试这个:
$url = "www.mydomain.com/api.php";
$ch= curl_init ($url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, http_build_query($_POST));
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch),true);
curl_close($ch);
获取404表示您的请求已通过,但您的请求无效,即。您的查询格式不正确。
将CURLOPT_POST设置为size($ _ POST),即如果$ _POST不为空,则为true表示您的数据必须为x-www-form-urlencoded。
这是默认内容类型。使用此内容类型提交的表单必须按如下方式编码:
转义控件名称和值。空格字符替换为'+',然后 保留字符按[RFC1738]第2.2节:非字母数字中所述进行转义 字符由'%HH',百分号和两个十六进制数字代替 字符的ASCII码。换行符表示为“CR LF”对(即, '%0D 0A%')。
控件名称/值按它们在文档中出现的顺序列出。名字是 通过'='与值分隔,名称/值对通过'&'分开。