PHP通过CURL POST发送JSON

时间:2014-04-17 19:37:11

标签: php json curl

我无法弄清楚为什么这个功能不是POST,任何想法?谢谢! 我正在尝试将JSON数据发送到服务器,我没有收到任何错误或反馈,var_dump($ response)只是给了我'null'。

function postToDatabase($data, $thingName){
  $content = json_encode($data);

  $curl = curl_init('http://someurl.com/thing'. $thingName .'/otherthing');
  curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
  curl_setopt($curl, CURLOPT_HEADER, false);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl, CURLOPT_HTTPHEADER,
    array("Content-type: application/json"));
  curl_setopt($curl, CURLOPT_POST, true);
  curl_setopt($curl, CURLOPT_POSTFIELDS, $content);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //curl error SSL certificate problem, verify that the CA cert is OK

$result     = curl_exec($curl);
$response   = json_decode($result);
var_dump($response);
curl_close($curl);
}


/* post to url */
postToDatabase($someData, $thingName);

我的JSON $内容:

{
    "email": null,
    "stripeToken": "aidfat9s8d7ftas7df9asjd7fy0aksd",
    "stripeShippingName": "A Test User",
    "stripeShippingAddressLine1": "1we2e12",
    "stripeShippingAddressZip": "62650",
    "stripeShippingAddressState": "IL",
    "stripeShippingAddressCity": "Jacksonville",
    "stripeShippingAddressCountry": "United States",
    "products": [
        {
            "productId": "897349864",
            "sizeId": "4",
            "colorId": "6",
            "units": 1
        }
    ]
}

2 个答案:

答案 0 :(得分:1)

如果你在$ result中获得了某些东西,但是没有在$ response中,那么你的JSON是否格格不入?尝试使用:http://www.php.net/manual/en/function.json-last-error.php

或者您可以使用http://jsonlint.org/来检查原始$ result;

答案 1 :(得分:1)

您的问题可能是由于curl中发生错误或使用json_decode()解码json字符串时我建议您考虑使用相关的错误函数实现更多错误处理,例如:

$result     = curl_exec($curl);
if($result == false){
     var_dump(curl_error($curl)); // http://se2.php.net/manual/en/function.curl-error.php
}
$response   = json_decode($result);
if ($resonse == null){
    var_dump(json_last_error());
}
var_dump($response);
curl_close($curl);

以下是CURL错误列表:http://se2.php.net/manual/en/function.curl-errno.php

<?php
$error_codes=array(
[1] => 'CURLE_UNSUPPORTED_PROTOCOL', 
[2] => 'CURLE_FAILED_INIT', 
[3] => 'CURLE_URL_MALFORMAT', 
[4] => 'CURLE_URL_MALFORMAT_USER', 
[5] => 'CURLE_COULDNT_RESOLVE_PROXY', 
[6] => 'CURLE_COULDNT_RESOLVE_HOST', 
[7] => 'CURLE_COULDNT_CONNECT', 
[8] => 'CURLE_FTP_WEIRD_SERVER_REPLY',
[9] => 'CURLE_REMOTE_ACCESS_DENIED',
[11] => 'CURLE_FTP_WEIRD_PASS_REPLY',
[13] => 'CURLE_FTP_WEIRD_PASV_REPLY',
[14]=>'CURLE_FTP_WEIRD_227_FORMAT',
[15] => 'CURLE_FTP_CANT_GET_HOST',
[17] => 'CURLE_FTP_COULDNT_SET_TYPE',
[18] => 'CURLE_PARTIAL_FILE',
[19] => 'CURLE_FTP_COULDNT_RETR_FILE',
[21] => 'CURLE_QUOTE_ERROR',
[22] => 'CURLE_HTTP_RETURNED_ERROR',
[23] => 'CURLE_WRITE_ERROR',
[25] => 'CURLE_UPLOAD_FAILED',
[26] => 'CURLE_READ_ERROR',
[27] => 'CURLE_OUT_OF_MEMORY',
[28] => 'CURLE_OPERATION_TIMEDOUT',
[30] => 'CURLE_FTP_PORT_FAILED',
[31] => 'CURLE_FTP_COULDNT_USE_REST',
[33] => 'CURLE_RANGE_ERROR',
[34] => 'CURLE_HTTP_POST_ERROR',
[35] => 'CURLE_SSL_CONNECT_ERROR',
[36] => 'CURLE_BAD_DOWNLOAD_RESUME',
[37] => 'CURLE_FILE_COULDNT_READ_FILE',
[38] => 'CURLE_LDAP_CANNOT_BIND',
[39] => 'CURLE_LDAP_SEARCH_FAILED',
[41] => 'CURLE_FUNCTION_NOT_FOUND',
[42] => 'CURLE_ABORTED_BY_CALLBACK',
[43] => 'CURLE_BAD_FUNCTION_ARGUMENT',
[45] => 'CURLE_INTERFACE_FAILED',
[47] => 'CURLE_TOO_MANY_REDIRECTS',
[48] => 'CURLE_UNKNOWN_TELNET_OPTION',
[49] => 'CURLE_TELNET_OPTION_SYNTAX',
[51] => 'CURLE_PEER_FAILED_VERIFICATION',
[52] => 'CURLE_GOT_NOTHING',
[53] => 'CURLE_SSL_ENGINE_NOTFOUND',
[54] => 'CURLE_SSL_ENGINE_SETFAILED',
[55] => 'CURLE_SEND_ERROR',
[56] => 'CURLE_RECV_ERROR',
[58] => 'CURLE_SSL_CERTPROBLEM',
[59] => 'CURLE_SSL_CIPHER',
[60] => 'CURLE_SSL_CACERT',
[61] => 'CURLE_BAD_CONTENT_ENCODING',
[62] => 'CURLE_LDAP_INVALID_URL',
[63] => 'CURLE_FILESIZE_EXCEEDED',
[64] => 'CURLE_USE_SSL_FAILED',
[65] => 'CURLE_SEND_FAIL_REWIND',
[66] => 'CURLE_SSL_ENGINE_INITFAILED',
[67] => 'CURLE_LOGIN_DENIED',
[68] => 'CURLE_TFTP_NOTFOUND',
[69] => 'CURLE_TFTP_PERM',
[70] => 'CURLE_REMOTE_DISK_FULL',
[71] => 'CURLE_TFTP_ILLEGAL',
[72] => 'CURLE_TFTP_UNKNOWNID',
[73] => 'CURLE_REMOTE_FILE_EXISTS',
[74] => 'CURLE_TFTP_NOSUCHUSER',
[75] => 'CURLE_CONV_FAILED',
[76] => 'CURLE_CONV_REQD',
[77] => 'CURLE_SSL_CACERT_BADFILE',
[78] => 'CURLE_REMOTE_FILE_NOT_FOUND',
[79] => 'CURLE_SSH',
[80] => 'CURLE_SSL_SHUTDOWN_FAILED',
[81] => 'CURLE_AGAIN',
[82] => 'CURLE_SSL_CRL_BADFILE',
[83] => 'CURLE_SSL_ISSUER_ERROR',
[84] => 'CURLE_FTP_PRET_FAILED',
[84] => 'CURLE_FTP_PRET_FAILED',
[85] => 'CURLE_RTSP_CSEQ_ERROR',
[86] => 'CURLE_RTSP_SESSION_ERROR',
[87] => 'CURLE_FTP_BAD_FILE_LIST',
[88] => 'CURLE_CHUNK_FAILED');

?>