2016-05-24 2 views
0

У меня есть API, для которого требуется HTTP/Request2.php.API HTTP/Request2.php для CURL

(Apache HTTP-клиент с HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)

можно использовать CURL вместо этого, есть ли способ, чтобы не использовать этот компонент?

здесь код API

<?php 
require_once 'HTTP/Request2.php'; 

$request = new Http_Request2('http://ww'); 
$url = $request->getUrl(); 

$headers = array(
    // Request headers 
    'Content-Type' => 'application/json', 
    'Ocp-Apim-Subscription-Key' => '{subscription key}', 
); 

$request->setHeader($headers); 

$parameters = array(
    // Request parameters 
); 

$url->setQueryVariables($parameters); 

$request->setMethod(HTTP_Request2::METHOD_POST); 

// Request body 
$request->setBody("{body}"); 

try 
{ 
    $response = $request->send(); 
    echo $response->getBody(); 
} 
catch (HttpException $ex) 
{ 
    echo $ex; 
} 

?> 
+0

Информация не достаточна, чтобы дать хорошее направление. Теоретически вы должны это сделать, используя cURL, поскольку в конце дня все, что вы, вероятно, делаете, это формирование HTTP-запроса. Теперь целесообразно ли переписать код для использования cURL - это совсем другой вопрос. –

+0

Я обновляю свой вопрос кодом – Markos

ответ

0

Зная, что этот вопрос задан почти год назад, я подумал, что должен дать ответ, так как я столкнулся с той же проблемой, и, возможно, это случилось и с другими.

Судя по указанному коду и заголовку Ocp-Apic-Subscription-Key, я думаю, вы пытаетесь установить связь с Microsoft's Vision API (Documentation). Вот что я использовал для связи с API через cURL:

$headers = array(
    // application/json is also a valid content-type 
    // but in my case I had to set it to octet-steam 
    // for I am trying to send a binary image 
    'Content-Type: application/octet-stream', 
    'Ocp-Apim-Subscription-Key: {subscription key}' 
); 
$curl = $curl_init(); 
curl_setopt($curl, CURLOPT_FRESH_CONNECT, true); // don't cache curl request 
curl_setopt($curl, CURLOPT_URL, '{api endpoint}'); 
curl_setopt($curl, CURLOPT_POST, true); // http POST request 
// if content-type is set to application/json, the POSTFIELDS should be: 
// json_encode(array('url' => $body)) 
curl_setopt($curl, CURLOPT_POSTFIELDS, $body); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // return the transfer as a string of the return value 
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
// disabling SSL checks may not be needed, in my case though I had to do it 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 

$response = curl_exec($curl); 
$curlError = curl_error($curl); 
curl_close($curl);