Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 小发票api curl请求_Php_Curl - Fatal编程技术网

Php 小发票api curl请求

Php 小发票api curl请求,php,curl,Php,Curl,我正在研究SmallInvoice api。这里是链接 smallinvoice.ch/api/general/overview 我正在尝试在小发票帐户中添加客户。这是密码 $url='' 这是旋度响应 {“error”:true,“errorcode”:0,“errormessage”:“提供的数据流无效或为空”} 当我打印$json\u add\u时,客户端变量数据如下所示 {“类型”:2,“性别”:1,“姓名”:“阿德南·艾哈迈德”,“语言”:“恩”,“数字”:5,“地址”:[{“街道”:

我正在研究SmallInvoice api。这里是链接

smallinvoice.ch/api/general/overview

我正在尝试在小发票帐户中添加客户。这是密码

$url=''

这是旋度响应

{“error”:true,“errorcode”:0,“errormessage”:“提供的数据流无效或为空”}

当我打印$json\u add\u时,客户端变量数据如下所示

{“类型”:2,“性别”:1,“姓名”:“阿德南·艾哈迈德”,“语言”:“恩”,“数字”:5,“地址”:[{“街道”:“地址”,“街道号”:“,”代码:60000,“城市”:“木尔坦”,“国家”:“PK”}]

我复制了上面的json数据并粘贴了小发票测试api。。(这是我粘贴的链接)

此时,客户端已成功添加

我不知道客户机为什么不通过CURL请求添加

如果有人知道,请告诉我我错在哪里。
我会感谢你的

这种情况很可能发生,因为您需要设置POST请求来发送json而不是URL编码的数据。在
curl\u exec
之前将此选项添加到curl请求中

curl_setopt($handle, CURLOPT_HTTPHEADER,
    array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($json_add_client)
    )
);
编辑: 在进一步阅读他们的文档后,您似乎必须按照以下结构格式化POST数据:

data={"amount":1,"value":1}
在本例中,您将执行类似的操作:

$address[] = array(
    "street" => "Address",
    "streetno" => "",
    "code" => 60000,
    "city" =>"Multan",
    "country" => "PK"
);
$this->data['add_client'] = array(
    "type" => 2,
    "gender" => 1, 
    "name" => "Adnan Ahmad",
    "language" => "en",
    "number" => 5,
    "addresses" => $address
);
$json_add_client = json_encode($this->data['add_client']);

// curl request start 
$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_POST, 1);
curl_setopt($handle,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($handle, CURLOPT_POSTFIELDS,
    array("data"=>$json_add_client)
);
curl_setopt($handle, CURLOPT_FOLLOWLOCATION  ,1);
curl_exec($handle);

先生,非常感谢您的回复。我添加了上面您发送的代码,但curl响应仍然是一样的。进一步查看他们的文档,您可能必须确保json字符串被分配给一个名为
data
的POST变量,比如
data={“amount”:1,“value”:1}
。先生,非常感谢。。它正在工作。。你太棒了。。再次感谢。。愿上帝保佑你
$address[] = array(
    "street" => "Address",
    "streetno" => "",
    "code" => 60000,
    "city" =>"Multan",
    "country" => "PK"
);
$this->data['add_client'] = array(
    "type" => 2,
    "gender" => 1, 
    "name" => "Adnan Ahmad",
    "language" => "en",
    "number" => 5,
    "addresses" => $address
);
$json_add_client = json_encode($this->data['add_client']);

// curl request start 
$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_POST, 1);
curl_setopt($handle,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($handle, CURLOPT_POSTFIELDS,
    array("data"=>$json_add_client)
);
curl_setopt($handle, CURLOPT_FOLLOWLOCATION  ,1);
curl_exec($handle);