通过php curl发送json但没有得到回复

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过php curl发送json但没有得到回复相关的知识,希望对你有一定的参考价值。

我正在尝试将json发送到网址并获得回复。我相信我正确地创造了json。但是当我尝试通过php curl发送它时,我没有得到回复。我发送给它的网址确实填充了一个回复。

这是php:

<?php
    $post = array("prompt" => $question, "functionName" => $func_name, "argumentNames" => $argumentNames, "testCases" => $testCases);

    $transfer = json_encode($post);   


    $ctrl = curl_init();
    curl_setopt($ctrl, CURLOPT_URL, "https://sample.com/question/add-question.php");
    curl_setopt($ctrl, CURLOPT_POST, TRUE);
    curl_setopt($ctrl, CURLOPT_POSTFIELDS, $transfer);
    curl_setopt($ctrl, CURLOPT_RETURNTRANSFER, TRUE);
    $response = curl_exec($ctrl);
    curl_close($ctrl);
    $response = json_decode($response);

    echo $response;
?>

如果我要回复$ transfer,它会显示:

{
"prompt":"Write a function named test that takes 2 argument(s) and adds them. The type of the arguments passed into the function and the value to be returned is int. The arguments for the function should be arg1 and arg2 depending on the number of arguments the function needs.",
"functionName":"test",
"argumentNames":["arg1","arg2"],
"testCases":{"input":["2","2"],
             "output":"4"}
}

我想回应来自我发送json的网址的响应,但相反,我什么也得不回来。然而,卷曲序列中的url(https://sample.com/question/add-question.php)确实在网页上输出了一个json:

{"message":"An unknown internal error occured","success":false}

我怎么能抓住这个并在原始代码片段中回显它?我的卷曲方法有问题吗?

答案

尝试设置标题,表示您正在发送JSON ...

curl_setopt($ctrl, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($transfer))                                                                       
); 

对于HTTPS,您可能还需要......

curl_setopt($ctrl, CURLOPT_SSL_VERIFYPEER, false);

你也可以试试......

curl_setopt($ctrl, CURLOPT_FOLLOWLOCATION, 1); 

以上是关于通过php curl发送json但没有得到回复的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 cURL/PHP 使用 PUT 方法将 JSON 数据发送到 API

PHP如何通过Post请求发送Json数据

使用 CURL 发送自定义标头

在php 的curl函数来GET一个地址,得到的响应是一个json文件,怎么来操作这个文件

如何在curl php中发送第二个请求时保留会话?

“本地主机没有发送数据。ERR_EMPTY_RESPONSE”和“curl:(52)来自服务器的空回复”