2014-02-10 5 views
-3

У меня возникают проблемы с командами PHP curl с использованием пользовательских заголовков. Может ли кто-нибудь увидеть, что здесь происходит?Плохой запрос на PHP Curl

$url = "https://api.sitescout.com/oauth/token"; 
    $ch = curl_init(); 

    $headers = array(
    "POST https://api.sitescout.com/oauth/token HTTP/1.1", 
    "Host: api.sitescout.com", 
    "Authorization: Basic bGFtcGhvdXNlLWFwaTp2RmhsSmlJMm5BT****", 
    "Content-Type: application/x-www-form-urlencoded", 
    "Accept: application/json", 
    "Content-Length: 41" 
); 

    $post_fields = array(
    'grant_type' => 'client_credentials' 
); 

    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

    $output = curl_exec($ch); 
    $info = curl_getinfo($ch); 

print_r($output); 

    curl_close($ch); 

    //var_dump($output); 

А вот ответ сервера.

HTTP/1.1 400 Bad Request Сервер: Apache-Coyote/1,1 Дата: Пн, 10 февраля 2014 5:13:09 GMT Подключение: закрыть

Любая помощь будет высоко оценена !!

+0

Плохие разместить данные ?? – shapeshifter

+0

Вы решили это, я получаю такой же пробный вопрос, дайте мне знать, если вы можете мне помочь. – s4suryapal

ответ

0

Я думаю, вам нужно добавить параметр UserAgent также:

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'); 

Это будет означать, что тип агента запрашивает содержимое.

+0

Спасибо, но я не мог помочь. Я все равно получил ту же ошибку. – user1759665

0

Вы можете попробовать, как это,

$url = "https://api.sitescout.com/oauth/token"; 
$requestType ='POST'; 
$accessToken = 'Insert Your accessToken'; 

/* data you want to post */ 
$data = array(
      'subject'=>$subject, 
      'starttime'=>$start, 
      'endtime'=>$end, 
      'passwordrequired'=>'false' 
     ); 

$postData = json_encode ($data); 
$headers = getJsonHeaders($accessToken); 

makeApiRequest($url, $requestType, $postData, $headers); 

public function makeApiRequest ($url = null, $requestType = 'GET', $postData = array(),$headers = array()) 
{ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

    if ($requestType == 'POST') { 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); 
    }else if($requestType == 'PUT'){ 
     curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); 
    } 

    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    $data = curl_exec($ch); 

    $validResponseCodes = array(200, 201); 
    $responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

    if($requestType == 'PUT'){ 
     return $responseCode; 
    } 

    if (curl_errno($ch)) { 
     curl_close($ch); 
     return curl_error($ch); 
    } 
    elseif (!in_array($responseCode, $validResponseCodes)) { 
     if (isJson($data)) { 
      $data = json_decode($data); 
     } 
    } 

    curl_close($ch); 
    return $data; 
} 

public function getJsonHeaders ($accessToken) 
{ 
    return array(
     "HTTP/1.1", 
     "Content-type: application/json", 
     "Accept: application/json", 
     "Authorization: OAuth oauth_token=". $accessToken 
    ); 
} 

public function isJson ($string) 
{ 
    $isJson = 0; 
    $decodedString = json_decode($string); 

    if (is_array($decodedString) || is_object($decodedString)) { 
     $isJson = 1; 
    } 

    return $isJson; 
} 
+0

Odd, я попробовал это и получил эту ошибку: Catchable fatal error: Объект класса stdClass не может быть преобразован в строку в /homepages/33/d451511314/htdocs/bemixt/sitescout.php в строке 88 – user1759665

+0

Обновлено, убедитесь, что вы прошли массив данных и accesstoken в соответствии с предоставленным вами. –

+0

Я на самом деле жестко закодировал токен прямо в функции. У меня все еще была такая же ошибка stdclass. – user1759665

Смежные вопросы