首页 文章

使用PHP CURL发布JSON

提问于
浏览
1

我的任务是发布到只接受JSON的API . 我正在使用PHP的CURL来实现这一目标 .

我以前发布过API没有问题,但从来没有JSON,我不熟悉的东西,我试图自己研究并解决问题,但我没有运气 .

在与我试图发布的公司的某人交谈时,我被告知我的服务器正在打他们的服务器,唯一不对的是我的帖子的主体没有正确格式化JSON ..(这家公司没有人知道php :(所以没有帮助)

这是我的代码:

$jarr = array("ProviderID" => "L005A", "FirstName" => $first, 
           "LastName" => $last, "PhoneNumber" => $PhoneNumber, 
           "PhoneNumberType" => $PhoneNumberType);

$content = json_encode($jarr);

$curl_handle = curl_init("URL Im posting to");
 curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array(
'Accept: application/json;charset=utf-8',
    'Content-Type: application/json;charset=utf-8',
    'Expect: 100-continue',
    'Connection: Keep-Alive'));
    curl_setopt($curl_handle, CURLOPT_HEADER, 1);
    curl_setopt($curl_handle, CURLOPT_POST, 0);
    curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $content);
    curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, 0);
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
    $first = curl_exec($curl_handle);
    curl_close($curl_handle);
    echo "Result ";
    echo $first;

从我给出的文档中,我必须遵循的唯一参数是:
方法:发布

头:
接受:application / json; charset = utf-8
Content-Type:application / json; charset = utf-8
期待:100-继续
连接:保持活力

目前,当我执行脚本时,我得到一个返回:

结果HTTP / 1.1 100继续HTTP / 1.1 400错误请求缓存控制:no-cache Pragma:no-cache Content-Type:application / json; charset = utf-8 Expires:-1 Server:Microsoft-IIS / 7.5 X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET Date:Thu,01 Nov 2012 15:43:18 GMT Content-Length :26 {“record.ProviderID”:[“”]}

因此导致400错误是因为我的身体格式不正确 . 我的问题是,如何格式化我需要以适当的JSON格式发送的数据?

根据我的阅读,这段代码应该这样做,但它没有:

$jarr = array("ProviderID" => "L005A", "FirstName" => $first,
           "LastName" => $last, "PhoneNumber" => $PhoneNumber,
           "PhoneNumberType" => $PhoneNumberType);

$content = json_encode($jarr);

1 回答

  • 0

    我遇到了同样的问题 . 经过调试,发现在发送JSON字符串时,没有引用或双引用Integer值是罪魁祸首 . 您需要将双引号整数值作为字符串发送 .

    例如:

    {"PhoneNumber":9876543210}
    

    要么

    {"PhoneNumber":"9876543210"}
    

    不管用 .

    {"PhoneNumber":"N_9876543210"}
    

    将工作 .

    我会在弄清楚这个问题的根本原因后立即更新 . 如果有人知道,请尽快更新 .

    编辑:URL编码解决了问题 . 我希望它也能解决你的问题 .

相关问题