2017-09-06 5 views

Antwort

1

Zuerst, wenn wir lokale Datei beziehen, sollten wir 'Content-Type': 'application/octet-stream' in einem Header verwenden, dann können wir Anfragen senden, die eine Stream-Ressource als den Körper verwenden.

Hier ist meine Arbeits Code Guzzle für Ihre Referenzen:

<?php 

require 'vendor/autoload.php'; 

$resource = fopen('./Shaki_waterfall.jpg', 'r'); 

$client = new \GuzzleHttp\Client();  
$res = $client->request('POST', 'https://westus.api.cognitive.microsoft.com/vision/v1.0/analyze', [ 
    'query' => [ 
     'visualFeatures' => 'Categories', 
     'details' => '', 
     'language' => 'en' 
    ], 
    'headers' => [ 
     'Content-Type' => 'application/octet-stream', 
     'Ocp-Apim-Subscription-Key' => '<Ocp-Apim-Subscription-Key>' 
    ], 
    'body' => $resource 
]); 

echo $res->getBody(); 

Mit HTTP_Request2:

<?php 

require_once 'HTTP/Request2.php'; 

$request = new Http_Request2('https://westus.api.cognitive.microsoft.com/vision/v1.0/analyze'); 
$url = $request->getUrl(); 

$headers = array(
    'Content-Type' => 'application/octet-stream', 
    'Ocp-Apim-Subscription-Key' => '<Ocp-Apim-Subscription-Key>', 
); 
$request->setHeader($headers); 

$parameters = array(
    'visualFeatures' => 'Categories', 
    'details' => '', 
    'language' => 'en', 
); 
$url->setQueryVariables($parameters); 

$request->setMethod(HTTP_Request2::METHOD_POST); 
$request->setBody(fopen('./Shaki_waterfall.jpg', 'r')); 

try { 
    $response = $request->send(); 
    echo $response->getBody(); 

} catch (HttpException $ex) { 
    echo $ex; 
} 
+0

mit einem Codebeispiel aktualisiert mit 'HTTP_Request2'. –

Verwandte Themen