#php #json #rest
#php #json #rest
Вопрос:
это мой первый пост здесь. Я надеюсь, что я правильно понял свой вопрос. Я использую переводчик Google с немецкого на английский, потому что мой английский не настолько хорош.
Я хотел бы использовать «api» из easybill. ПРИСТУПАЙТЕ к работе. Но, к сожалению, я не могу сделать это с помощью POST.
Я надеюсь, что кто-нибудь сможет мне помочь.
Я хотел бы создать нового клиента для тестирования. Моя цель — позже генерировать счета-фактуры с помощью PHP. «api» для easybill можно найти здесь:https://www.easybill.de/api /
Я попробовал следующий код, но, к сожалению, не могу найти ошибку.
$url = "https://api.easybill.de/rest/v1/customers";
$data = array(
'first_name' => 'Foo',
'last_name' => 'Bar',
'company_name' => 'FooBar GmbH',
'emails' => array ('foo.bar@foobar.com'
)
);
$postdata = json_encode(array($data));
$accesstoken = "XXXXXXXXXXX";
$headr = array();
$headr[] = 'Content-length: 0';
$headr[] = 'Content-type: application/json';
$headr[] = 'Authorization: Bearer '.$accesstoken;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headr);
$result = curl_exec($ch);
curl_close($ch);
print_r ($result);
С наилучшими пожеланиями из Германии.
Комментарии:
1. Какова ваша точная ошибка при попытке ОПУБЛИКОВАТЬ?
2. 400 неверных запросов nginx
3. Content-length: 0 наверняка неверно.
4. Спасибо. Теперь я немного продвинулся вперед.
Я прокомментировал строку. Теперь появляется сообщение об ошибке: {«code»:20000, «message»: «Bitte f u00fcllen Sie alle Felder aus.», «arguments»:[«last_name», «company_name»]} Но данные заполнены.
Ответ №1:
Ваши ошибки:
-
Content-length: 0
не имеет никакого смысла и здесь совершенно неверно. Afaik, вы можете полностью удалить его, поскольку curl делает это за вас. -
$postdata = json_encode(array($data));
обернет ваш массив в другой массив, что здесь неверно. Это приводит к:[{«first_name»:»Foo»,»last_name»:»Bar», «company_name»:»FooBar GmbH», «электронные письма»:[«foo.bar@foobar.com «]}]
где это должно быть:
{"first_name":"Foo","last_name":"Bar","company_name":"FooBar GmbH","emails":["foo.bar@foobar.com"]}
просто удалите вызов array:
$postdata = json_encode($data);