1
votes

I am trying to use the zoho inventory api and converting thier sample curl code for use in php

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://inventory.zoho.com/api/v1/salesorders");

$vars = array(
    "authtoken" => "",
    "organization_id" => "",
    "JSONString" => '{
        "customer_id": 4815000000044080,
    }'
);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$vars);  //Post Fields
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$headers = [
    'Authorization: Zoho-authtoken ',
    'Content-Type: application/json;charset=UTF-8',
];

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$server_output = curl_exec ($ch);

echo $server_output;

curl_close ($ch);

On the page I get this response

{"code":4,"message":"Invalid value passed for JSONString"}

The original code from the docs is

$ curl https://inventory.zoho.com/api/v1/salesorders?authtoken=ba4604e8e433g9c892e360d53463oec5&organization_id=10234695
-X POST
-H "Authorization: Zoho-authtoken ba4604e8e433g9c892e360d53463oec5"
-H "Content-Type: application/json;charset=UTF-8"
-d JSONString='{
    "customer_id": 4815000000044080,
}'

I have tried various google searches and it seems that a lot of people have had this same issue and there is no answer given for it yet.

I believe I am trying to add the JSONString in the wrong way

What is the correct way to send the JSONString in php using curl?

2

2 Answers

0
votes

Following is the C# code that will not give the following error:

"{"code":4,"message":"Invalid value passed for JSONString"}"` error.

1

-2
votes

I use a servise http://httpbin.org/post to look, how my post query looks for zoho. and find an error with symbols \ufeff before JSONString, this is BOM encoding. So, i change encoding and all right.

Look Example