2017-02-13 218 views
0

也许这个问题得到回答之前,但我测试的一切是我一个网络上找到,并不能使它工作... 我必须成立这种用PHP请求。PHP卷曲和API

  • 卷曲X POST “https://page.com/login/CODE” \
  • H “接受:应用/ JSON,文本/ *; Q = 0.2” \
  • H “AcceptCharset:UTF8” \
  • H“AcceptEncoding: gzip的,放气” \
  • d '{ “appCode”: “CODE”}' \
  • --cacert cacert.pem \
  • --compressed

这里是我的PHP代码:

$data = array('appCode'=>'CODE'); 
$data_json = json_encode($data); 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_CAINFO, "cacert.pem"); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($curl, CURLOPT_URL, URL_REQUEST); 
curl_setopt($curl, CURLOPT_HEADER, FALSE); 
curl_setopt($curl,CURLOPT_ENCODING , ""); 
    //curl_setopt($ch, CURLOPT_POST, 1); 
    //curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_json); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

如果我得到一个正确的答案,从API它应该是一个JSON阵列,ALSE按摩登录错误。

还是不知道这是什么文字/ *; Q = 0.2" ,有什么建议我在做什么错

如果有人将这里需要帮助我的代码:

$data = array('appCode'=>'CODE'); 
$data_json = json_encode($data); 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($curl, CURLOPT_CAINFO, "cacert.pem"); 
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://login.com/CODE", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => "", 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "POST", 
    CURLOPT_POSTFIELDS => $data_json, 
    CURLOPT_HTTPHEADER => array('cache-control: no-cache'), 
)); 

$response = curl_exec($curl); 
$err = curl_error($curl); 

curl_close($curl); 

if ($err) { 
    echo "cURL Error #:" . $err; 
} else { 
    echo $response; 
} 

最终我发现什么是错的。

我得到了所有的手册在PDF文件。 我从PDF复制标题信息,并将其粘贴到 Sublime 当我复制并这样 的Content-Type糊剂头部信息:应用/ JSON

在升华将其用破折号正常显示( - ),但是当我与像记事本等软件打开++它显示了不带短跑。 的ContentType:应用程序/ JSON

这是问题,为什么我的代码没有工作:)

+0

text/*; q = 0.2“被称为媒体类型品质因子,用于指定文件的优先级,在这种情况下,纯文本在0到1的范围内具有0.2的优先级 –

+0

它可能是其不工作的原因? – ekavet

+0

没有,你是不是设置在卷曲 –

回答

0

我知道这种卷曲“翻译”的好方法
您可以下载邮递员here并执行您的请求像往常一样
更多关于邮差here
当您完成您的请求建筑时,您可以转到代码(右上角,保存下方) - >并选择您喜欢的语言。在你的情况下PHP Curl。之后,您可以将该代码复制到curl请求。
它看起来就像这样:curl example from Postman

编辑: cUrl 这是怎么会看,如果你选择在“代码”卷曲选项等。

+0

问题是我得从我的服务器做,因为到API访问只能从服务器的IP来完成。 – ekavet

+0

你也可以找到在邮差代码卷曲选项。 – Grynets

+0

我已经添加编辑,所以你可以看到它的样子。 – Grynets

0

这个选项应该是未加注释,如果你需要一个POST请求

curl_setopt($ch, CURLOPT_POST, 1); 
+0

没有没有这一条:)我已经尝试它,评论它。那不是的情况下所需的所有选项。CURLOPT_POSTFIELDS本应发送POST头了。 .. – ekavet