1

我正在使用 sendhub API。

https://www.sendhub.com/developer/

并得到这个错误。

指示“application/x-www-form-urlencoded”的格式没有可用的反序列化方法。请检查您的formatscontent_types在您的序列化器上。

我正在使用的代码是:

    $ch = curl_init();

                curl_setopt($ch, CURLOPT_URL,$url);
                curl_setopt($ch, CURLOPT_HEADER, "Content-Type: application/json");
                curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

                if(LOCAL_MODE){
                  curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
                  curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
                  curl_setopt($ch, CURLOPT_PROXY, FALSE);
                 }

                curl_setopt($ch, CURLOPT_POST, 1);

                $data = '{
                   "contacts": [
                      1111
                   ],
                   "text": "Testing"
                }';

                curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
                echo $result=curl_exec ($ch);
                echo curl_error($ch);

谁能帮我解决这个问题。

谢谢你。

4

2 回答 2

5

似乎没有正确发送 Content-Type。

消息“指示的格式 'application/x-www-form-urlencoded' 没有可用的反序列化方法。” 表示服务器正在将内容类型读取为“application/x-www-form-urlencoded”而不是“application/json”。

您应该像这样设置内容类型:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

(注意 CURLOPT_HEADER 现在是 CURLOPT_HTTPHEADER)

假设您的 url(包括用户名和 apikey)是正确的并且提供的联系人 ID 存在,这现在应该可以工作了。

于 2012-09-13T05:01:55.240 回答
0
// The code
$vs_user = $t_user->getAppConfig()->get('sms_user');
$vs_api_key = $t_user->getAppConfig()->get('sms_api_key');
$vs_url = "https://api.sendhub.com/v1/messages/?username={$vs_user}&api_key={$vs_api_key}";
$o_ch = curl_init();
$ps_message = stripslashes(rawurldecode($ps_message));
$ps_message = trim(preg_replace("!\n+!","\\"."n", $ps_message));
curl_setopt($o_ch, CURLOPT_URL, $vs_url);
curl_setopt($o_ch, CURLOPT_HEADER, false);
curl_setopt($o_ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt($o_ch, CURLOPT_POSTFIELDS, '{"contacts":['.$vn_sendhub_contact_id.'],"text":"'.$ps_message.'"}');
curl_setopt($o_ch, CURLOPT_RETURNTRANSFER, 1);
$vs_return = curl_exec($o_ch);
$va_return = json_decode($vs_return);
curl_close($o_ch); 

检查我使用的我的 php

于 2014-04-16T11:37:53.933 回答