Επιλογές αίτησης

Μπορείτε να προσαρμόσετε τις αιτήσεις που δημιουργούνται και μεταφέρονται από έναν πελάτη χρησιμοποιώντας request options. Οι επιλογές αίτησης ελέγχουν διάφορες πτυχές μιας αίτησης συμπεριλαμβανομένων, των κεφαλίδων, των παραμέτρων της συμβολοσειράς ερωτήματος, των ρυθμίσεων χρονικού ορίου, του σώματος ενός αίτησης και πολλά άλλα.

Όλα τα παρακάτω παραδείγματα χρησιμοποιούν τον ακόλουθο πελάτη:

$client = new GuzzleHttp\Client(['base_uri' => 'http://httpbin.org']);

allow_redirects

Περίληψη

Περιγράφει τη συμπεριφορά ανακατεύθυνσης μιας αίτησης

Τύποι
  • bool
  • array
Προεπιλογή
[
    'max' => 5,
    'strict' => false,
    'referer' => false,
    'protocols' => ['http', 'https'],
    'track_redirects' => false
]
Σταθερή

GuzzleHttp\RequestOptions::ALLOW_REDIRECTS

Ορίστε την τιμή false για να απενεργοποιήσετε τις ανακατευθύνσεις.

$res = $client->request('GET', '/redirect/3', ['allow_redirects' => false]);
echo $res->getStatusCode();
// 302

Ορίστε την τιμή true (η προεπιλεγμένη ρύθμιση) για να ενεργοποιήσετε τις κανονικές ανακατευθύνσεις με μέγιστο αριθμό 5 ανακατευθύνσεων.

$res = $client->request('GET', '/redirect/3');
echo $res->getStatusCode();
// 200

Μπορείτε επίσης να περάσετε έναν συσχετιστικό πίνακα που περιέχει τα ακόλουθα ζεύγη τιμών κλειδιών:

  • max: (int, default=5) μέγιστος αριθμός επιτρεπόμενων ανακατευθύνσεων.

  • strict: (bool, default=false) Ορίστε την τιμή true για να χρησιμοποιήσετε αυστηρές ανακατευθύνσεις. Οι αυστηρές ανακατευθύνσεις σύμφωνα με το RFC σημαίνουν ότι τα αιτήματα ανακατεύθυνσης POST αποστέλλονται ως POST αιτήματα έναντι αυτού που κάνουν οι περισσότεροι φυλλομετρητές, δηλαδή ανακατευθύνουν τα αιτήματα POST με αιτήματα GET

  • referer: (bool, default=false) Ορίστε την τιμή true για να ενεργοποιήσετε την προσθήκη του Referer επικεφαλίδας κατά την ανακατεύθυνση

  • πρωτόκολλα: (array, default=['http', 'https']) Καθορίζεται ποια πρωτόκολλα είναι επιτρέπονται για αιτήσεις ανακατεύθυνσης

  • on_redirect: (callable) PHP callable που καλείται όταν γίνεται ανακατεύθυνση συναντάται. Η callable καλείται με το αρχικό αίτημα και το απάντηση ανακατεύθυνσης που ελήφθη. Οποιαδήποτε τιμή επιστροφής από την on_redirect αγνοείται.

  • track_redirects: true, κάθε URI ανακατεύθυνσης και status κωδικός που συναντάται θα παρακολουθείται στο X-Guzzle-Redirect-History και X-Guzzle-Redirect-Status-History αντίστοιχα. Όλα τα URIs και κωδικοί κατάστασης θα αποθηκεύονται με τη σειρά με την οποία εμφανίστηκαν οι ανακατευθύνσεις

    Σημείωση: Κατά την παρακολούθηση των ανακατευθύνσεων η επικεφαλίδα X-Guzzle-Redirect-History θα αποκλείει το URI της αρχικής αίτησης και την X-Guzzle-Redirect-Status-History κεφαλίδα θα αποκλείσει τον τελικό κωδικό κατάστασης

use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\UriInterface;

$onRedirect = function(
    RequestInterface $request,
    ResponseInterface $response,
    UriInterface $uri
) {
    echo 'Redirecting! ' . $request->getUri() . ' to ' . $uri . "\n";
};

$res = $client->request('GET', '/redirect/3', [
    'allow_redirects' => [
        'max'             => 10,        // allow at most 10 redirects.
        'strict'          => true,      // use "strict" RFC compliant redirects.
        'referer'         => true,      // add a Referer header
        'protocols'       => ['https'], // only allow https URLs
        'on_redirect'     => $onRedirect,
        'track_redirects' => true
    ]
]);

echo $res->getStatusCode();
// 200

echo $res->getHeaderLine('X-Guzzle-Redirect-History');
// http://first-redirect, http://second-redirect, etc...

echo $res->getHeaderLine('X-Guzzle-Redirect-Status-History');
// 301, 302, etc...

Προειδοποίηση

Αυτή η επιλογή έχει αποτέλεσμα μόνο αν ο χειριστής σας έχει την επιλογή GuzzleHttp\Middleware::redirect middleware. Αυτό το middleware προστίθεται από προεπιλογή όταν δημιουργείται ένας πελάτης χωρίς χειριστή, και προστίθεται από το όταν δημιουργείται ένας χειριστής με GuzzleHttp\HandlerStack::create.

Σημείωση

Αυτή η επιλογή δεν έχει καμία επίδραση όταν κάνετε αιτήσεις χρησιμοποιώντας GuzzleHttp\Client::sendRequest(). Προκειμένου να παραμείνει συμβατή με το PSR-18, οποιαδήποτε απάντηση ανακατεύθυνσης επιστρέφεται ως έχει.

auth

Περίληψη

Περάστε έναν πίνακα παραμέτρων ελέγχου ταυτότητας HTTP για χρήση με την εντολή request. Ο πίνακας πρέπει να περιέχει το όνομα χρήστη στον δείκτη [0], τον κωδικό πρόσβασης στον δείκτη index [1], και μπορείτε προαιρετικά να παρέχετε έναν ενσωματωμένο τύπο ελέγχου ταυτότητας στο index [2]. Περάστε null για να απενεργοποιήσετε τον έλεγχο ταυτότητας για μια αίτηση

Τύποι
  • array
  • string
  • null
Προεπιλογή

Κανένα

Σταθερή

GuzzleHttp\RequestOptions::AUTH

Οι ενσωματωμένοι τύποι ελέγχου ταυτότητας είναι οι εξής:

βασικό
Χρησιμοποιήστε βασικό έλεγχο ταυτότητας HTTP στην επικεφαλίδα Authorization (η προεπιλεγμένη ρύθμιση που χρησιμοποιείται αν δεν υπάρχει καθοριστεί).
$client->request('GET', '/get', ['auth' => ['username', 'password']]);
digest
Χρησιμοποιήστε digest authentication (πρέπει να υποστηρίζεται από τον χειριστή HTTP).
$client->request('GET', '/get', [
    'auth' => ['username', 'password', 'digest']
]);

Σημείωση

Αυτό υποστηρίζεται προς το παρόν μόνο όταν χρησιμοποιείται ο χειριστής cURL, αλλά η δημιουργία μιας αντικατάστασης που μπορεί να χρησιμοποιηθεί με οποιονδήποτε χειριστή HTTP είναι προγραμματιστεί.

ntlm
Χρησιμοποιήστε Έλεγχος ταυτότητας Microsoft NTLM (πρέπει να υποστηρίζεται από τον επεξεργαστή HTTP).
$client->request('GET', '/get', [
    'auth' => ['username', 'password', 'ntlm']
]);

Σημείωση

Αυτό υποστηρίζεται προς το παρόν μόνο όταν χρησιμοποιείται ο χειριστής cURL.

body

Περίληψη

Η επιλογή body χρησιμοποιείται για τον έλεγχο του σώματος μιας οντότητας. που περικλείει την αίτηση (π.χ. PUT, POST, PATCH)

Τύποι
  • string
  • fopen() resource
  • Psr\Http\Message\StreamInterface
Προεπιλογή

Κανένα

Σταθερή

GuzzleHttp\RequestOptions::BODY

Αυτή η ρύθμιση μπορεί να οριστεί σε οποιονδήποτε από τους ακόλουθους τύπους:

  • string

    // Μπορείτε να στείλετε αιτήσεις που χρησιμοποιούν μια συμβολοσειρά ως σώμα μηνύματος.
    $client->request('PUT', '/put', ['body' => 'foo']),
    
  • πόρος που επιστρέφεται από fopen()

    // Μπορείτε να στείλετε αιτήσεις που χρησιμοποιούν έναν πόρο ροής ως σώμα.
    $resource = \GuzzleHttp\Psr7\Utils::tryFopen('http://httpbin.org', 'r'),
    $client->request('PUT', '/put', ['body' => $resource]),
    
  • Psr\Http\Message\StreamInterface

    // Μπορείτε να στείλετε αιτήσεις που χρησιμοποιούν ένα αντικείμενο ροής Guzzle ως σώμα
    $stream = GuzzleHttp\Psr7\Utils::streamFor('contents...'),
    $client->request('POST', '/post', ['body' => $stream]),
    

Σημείωση

Αυτή η επιλογή δεν μπορεί να χρησιμοποιηθεί με form_params, multipart, ή json

cert

Περίληψη

Ορίζεται σε μια συμβολοσειρά για να καθορίσετε τη διαδρομή προς ένα αρχείο που περιέχει ένα PEM μορφοποιημένο πιστοποιητικό πελάτη. Εάν απαιτείται κωδικός πρόσβασης, τότε ορίστε το έναν πίνακα που περιέχει τη διαδρομή προς το αρχείο PEM στο πρώτο στοιχείο του πίνακα ακολουθούμενο από τον κωδικό πρόσβασης που απαιτείται για το πιστοποιητικό στο δεύτερο στοιχείο πίνακα στοιχείο.

Τύποι
  • string
  • array
Προεπιλογή

Κανένα

Σταθερή

GuzzleHttp\RequestOptions::CERT

$client->request('GET', '/', ['cert' => ['/path/server.pem', 'password']]);

cookies

Περίληψη
Καθορίζει εάν χρησιμοποιούνται ή όχι cookies σε μια αίτηση ή ποια cookies jar να χρησιμοποιηθεί ή ποια cookies να αποσταλούν.
Τύποι
GuzzleHttp\Cookie\CookieJarInterface
Προεπιλογή
Κανένα
Σταθερή
GuzzleHttp\RequestOptions::COOKIES

Πρέπει να καθορίσετε την επιλογή cookies ως GuzzleHttp\Cookie\CookieJarInterface ή false.

$jar = new \GuzzleHttp\Cookie\CookieJar();
$client->request('GET', '/get', ['cookies' => $jar]);

Προειδοποίηση

Αυτή η επιλογή έχει αποτέλεσμα μόνο αν ο χειριστής σας έχει την επιλογή GuzzleHttp\Middleware::cookies middleware. Αυτό το middleware προστίθεται από προεπιλογή όταν δημιουργείται ένας πελάτης χωρίς χειριστή, και προστίθεται από το όταν δημιουργείται ένας χειριστής με GuzzleHttp\default_handler.

Συμβουλή

Κατά τη δημιουργία ενός πελάτη, μπορείτε να ορίσετε την προεπιλεγμένη επιλογή cookie σε true για να χρησιμοποιήσετε μια κοινή συνεδρία cookie που σχετίζεται με τον πελάτη.

connect_timeout

Περίληψη
Float που περιγράφει τον αριθμό των δευτερολέπτων αναμονής κατά την προσπάθεια σύνδεσης σε έναν διακομιστή. Χρησιμοποιήστε 0 για να περιμένετε επ' αόριστον (η προεπιλεγμένη συμπεριφορά).
Τύποι
float
Προεπιλογή
0
Σταθερή
GuzzleHttp\RequestOptions::CONNECT_TIMEOUT
// Timeout if the client fails to connect to the server in 3.14 seconds.
$client->request('GET', '/delay/5', ['connect_timeout' => 3.14]);

Σημείωση

Αυτή η ρύθμιση πρέπει να υποστηρίζεται από τον χειριστή HTTP που χρησιμοποιείται για την αποστολή μιας αίτησης. connect_timeout υποστηρίζεται προς το παρόν μόνο από τον ενσωματωμένο cURL handler.

debug

Περίληψη

Ορίζεται σε true ή ορίζεται σε μια ροή PHP που επιστρέφεται από την fopen() για να να ενεργοποιήσετε την έξοδο αποσφαλμάτωσης με τον χειριστή που χρησιμοποιείται για την αποστολή μιας αίτησης. Για παράδειγμα, όταν χρησιμοποιείται η cURL για τη μεταφορά αιτήσεων, το verbose της cURL της CURLOPT_VERBOSE θα εκπέμπεται. Όταν χρησιμοποιείτε το περιτύλιγμα ροής της PHP, το περιτύλιγμα ροής θα εκπέμπονται ειδοποιήσεις. Εάν οριστεί σε true, η έξοδος γράφεται στο STDOUT της PHP. Εάν παρέχεται μια ροή PHP, η έξοδος γράφεται στη ροή

Τύποι
  • bool
  • fopen() resource
Προεπιλογή

Κανένα

Σταθερή

GuzzleHttp\RequestOptions::DEBUG

$client->request('GET', '/get', ['debug' => true]);

Η εκτέλεση του παραπάνω παραδείγματος θα έβγαζε κάτι σαν το ακόλουθο:

* About to connect() to httpbin.org port 80 (#0)
*   Trying 107.21.213.98... * Connected to httpbin.org (107.21.213.98) port 80 (#0)
> GET /get HTTP/1.1
Host: httpbin.org
User-Agent: Guzzle/4.0 curl/7.21.4 PHP/5.5.7

< HTTP/1.1 200 OK
< Access-Control-Allow-Origin: *
< Content-Type: application/json
< Date: Sun, 16 Feb 2014 06:50:09 GMT
< Server: gunicorn/0.17.4
< Content-Length: 335
< Connection: keep-alive
<
* Connection #0 to host httpbin.org left intact

decode_content

Περίληψη

Καθορίστε εάν οι Content-Encoding απαντήσεις (gzip, deflate κ.λπ.) αποκωδικοποιούνται αυτόματα

Τύποι
  • string
  • bool
Προεπιλογή

true

Σταθερή

GuzzleHttp\RequestOptions::DECODE_CONTENT

Αυτή η επιλογή μπορεί να χρησιμοποιηθεί για τον έλεγχο του τρόπου με τον οποίο τα κωδικοποιημένα σώματα απόκρισης περιεχομένου χειρίζεται. Από προεπιλογή, decode_content έχει οριστεί σε true, που σημαίνει ότι κάθε gzipped ή deflated απάντηση θα αποκωδικοποιηθεί από το Guzzle.

Όταν έχει οριστεί σε false, το σώμα μιας απάντησης δεν αποκωδικοποιείται ποτέ, πράγμα που σημαίνει ότι τα bytes περνούν από τον χειριστή αναλλοίωτα.

// Request gzipped data, but do not decode it while downloading
$client->request('GET', '/foo.js', [
    'headers'        => ['Accept-Encoding' => 'gzip'],
    'decode_content' => false
]);

Όταν ορίζεται σε συμβολοσειρά, τα bytes μιας απάντησης αποκωδικοποιούνται και η τιμή της συμβολοσειράς που παρέχεται στην επιλογή decode_content περνάει ως Accept-Encoding κεφαλίδα της αίτησης.

// Pass "gzip" as the Accept-Encoding header.
$client->request('GET', '/foo.js', ['decode_content' => 'gzip']);

delay

Περίληψη

Ο αριθμός των χιλιοστών του δευτερολέπτου για την καθυστέρηση πριν από την αποστολή της αίτησης

Τύποι
  • integer
  • float
Προεπιλογή

null

Σταθερή

GuzzleHttp\RequestOptions::DELAY

expect

Περίληψη

Ελέγχει τη συμπεριφορά της επικεφαλίδας "Expect: 100-Continue".

Τύποι
  • bool
  • integer
Προεπιλογή

1048576

Σταθερή

GuzzleHttp\RequestOptions::EXPECT

Ορίστε την τιμή true για να ενεργοποιήσετε την επικεφαλίδα "Expect: 100-Continue" για όλες τις αιτήσεις. που στέλνουν ένα σώμα. Ορίστε την τιμή false για να απενεργοποιήσετε την "Expect: 100-Continue" για όλες τις αιτήσεις. Ορίζεται σε έναν αριθμό, έτσι ώστε το μέγεθος του ωφέλιμου φορτίου να πρέπει να να είναι μεγαλύτερο από τον αριθμό προκειμένου να σταλεί η επικεφαλίδα Expect. Ορισμός σε a αριθμό θα στείλει την επικεφαλίδα Expect για όλες τις αιτήσεις στις οποίες το μέγεθος του ωφέλιμου φορτίου δεν μπορεί να προσδιοριστεί ή όπου το σώμα δεν μπορεί να αναδιπλωθεί.

Από προεπιλογή, το Guzzle θα προσθέσει την επικεφαλίδα "Expect: 100-Continue" όταν το μέγεθος του σώματος μιας αίτησης είναι μεγαλύτερο από 1 MB και μια αίτηση χρησιμοποιεί HTTP/1.1.

Σημείωση

Αυτή η επιλογή ισχύει μόνο όταν χρησιμοποιείτε HTTP/1.1. Οι επιλογές HTTP/1.0 και HTTP/2.0 δεν υποστηρίζουν την επικεφαλίδα "Expect: 100-Continue". Η υποστήριξη για το χειρισμό της ροής εργασίας "Expect: 100-Continue" πρέπει να είναι υλοποιηθεί από τους χειριστές HTTP του Guzzle που χρησιμοποιούνται από έναν πελάτη.

force_ip_resolve

Περίληψη
Ορίστε το "v4" αν θέλετε οι χειριστές HTTP να χρησιμοποιούν μόνο το πρωτόκολλο ipv4 ή το "v6" για το πρωτόκολλο ipv6.
Τύποι
string
Προεπιλογή
null
Σταθερή
GuzzleHttp\RequestOptions::FORCE_IP_RESOLVE
// Force ipv4 protocol
$client->request('GET', '/foo', ['force_ip_resolve' => 'v4']);

// Force ipv6 protocol
$client->request('GET', '/foo', ['force_ip_resolve' => 'v6']);

Σημείωση

Αυτή η ρύθμιση πρέπει να υποστηρίζεται από τον χειριστή HTTP που χρησιμοποιείται για την αποστολή μιας αίτησης. force_ip_resolve υποστηρίζεται προς το παρόν μόνο από τον ενσωματωμένο cURL και τους χειριστές ροής.

form_params

Περίληψη
Χρησιμοποιείται για την αποστολή μιας αίτησης application/x-www-form-urlencoded POST.
Τύποι
array
Σταθερή
GuzzleHttp\RequestOptions::FORM_PARAMS

Συναρτησιακός πίνακας ονομάτων πεδίων φόρμας σε τιμές όπου κάθε τιμή είναι μια συμβολοσειρά ή πίνακας συμβολοσειρών. Ορίζει την επικεφαλίδα Content-Type σε application/x-www-form-urlencoded όταν δεν υπάρχει ήδη επικεφαλίδα Content-Type παρούσα.

$client->request('POST', '/post', [
    'form_params' => [
        'foo' => 'bar',
        'baz' => ['hi', 'there!']
    ]
]);

Σημείωση

Το form_params δεν μπορεί να χρησιμοποιηθεί με την επιλογή multipart. Θα πρέπει να χρησιμοποιήσετε την επιλογή μία από τις δύο επιλογές. Χρησιμοποιήστε form_params για application/x-www-form-urlencoded αιτήσεις, και multipart για multipart/form-data αιτήσεις.

Αυτή η επιλογή δεν μπορεί να χρησιμοποιηθεί με body, multipart, ή json

headers

Περίληψη
Συνδετικός πίνακας επικεφαλίδων που πρέπει να προστεθούν στην αίτηση. Κάθε κλειδί είναι το όνομα μιας επικεφαλίδας και κάθε τιμή είναι μια συμβολοσειρά ή ένας πίνακας συμβολοσειρών που αντιπροσωπεύουν τις τιμές των πεδίων επικεφαλίδων.
Τύποι
array
Προεπιλογές
Κανένα
Σταθερή
GuzzleHttp\RequestOptions::HEADERS
// Set various headers on a request
$client->request('GET', '/get', [
    'headers' => [
        'User-Agent' => 'testing/1.0',
        'Accept'     => 'application/json',
        'X-Foo'      => ['Bar', 'Baz']
    ]
]);

Οι επικεφαλίδες μπορούν να προστεθούν ως προεπιλεγμένες επιλογές κατά τη δημιουργία ενός πελάτη. Όταν οι επικεφαλίδες χρησιμοποιούνται ως προεπιλεγμένες επιλογές, εφαρμόζονται μόνο εάν η αίτηση που δημιουργείται δεν περιέχει ήδη τη συγκεκριμένη επικεφαλίδα. Αυτό περιλαμβάνει τόσο τις αιτήσεις που περνούν στον πελάτη στις μεθόδους send() και sendAsync(), όσο και οι αιτήσεις που δημιουργούνται από τον πελάτη (π.χ. request() και requestAsync()).

$client = new GuzzleHttp\Client(['headers' => ['X-Foo' => 'Bar']]);

// Will send a request with the X-Foo header.
$client->request('GET', '/get');

// Sets the X-Foo header to "test", which prevents the default header
// from being applied.
$client->request('GET', '/get', ['headers' => ['X-Foo' => 'test']]);

// Will disable adding in default headers.
$client->request('GET', '/get', ['headers' => null]);

// Will not overwrite the X-Foo header because it is in the message.
use GuzzleHttp\Psr7\Request;
$request = new Request('GET', 'http://foo.com', ['X-Foo' => 'test']);
$client->send($request);

// Will overwrite the X-Foo header with the request option provided in the
// send method.
use GuzzleHttp\Psr7\Request;
$request = new Request('GET', 'http://foo.com', ['X-Foo' => 'test']);
$client->send($request, ['headers' => ['X-Foo' => 'overwrite']]);

http_errors

Περίληψη
Ορίστε την τιμή false για να απενεργοποιήσετε τη δημιουργία εξαιρέσεων σε ένα πρωτόκολλο HTTP. σφάλματα (δηλαδή, απαντήσεις 4xx και 5xx). Οι εξαιρέσεις απορρίπτονται από προεπιλογή όταν παρουσιάζονται σφάλματα πρωτοκόλλου HTTP.
Τύποι
bool
Προεπιλογή
true
Σταθερή
GuzzleHttp\RequestOptions::HTTP_ERRORS
$client->request('GET', '/status/500');
// Throws a GuzzleHttp\Exception\ServerException

$res = $client->request('GET', '/status/500', ['http_errors' => false]);
echo $res->getStatusCode();
// 500

Προειδοποίηση

Αυτή η επιλογή έχει αποτέλεσμα μόνο αν ο χειριστής σας έχει την επιλογή GuzzleHttp\Middleware::httpErrors middleware. Αυτό το middleware προστίθεται από προεπιλογή όταν δημιουργείται ένας πελάτης χωρίς χειριστή, και προστίθεται από το όταν δημιουργείται ένας χειριστής με GuzzleHttp\default_handler.

idn_conversion

Περίληψη

Υποστήριξη διεθνοποιημένων ονομάτων τομέα (IDN) (ενεργοποιημένη από προεπιλογή εάν intl η επέκταση είναι διαθέσιμη)

Τύποι
  • bool
  • int
Προεπιλογή

true if intl extension is available (and ICU library is 4.6+ for PHP 7.2+), false otherwise

Σταθερή

GuzzleHttp\RequestOptions::IDN_CONVERSION

$client->request('GET', 'https://яндекс.рф');
// яндекс.рф is translated to xn--d1acpjx3f.xn--p1ai before passing it to the handler

$res = $client->request('GET', 'https://яндекс.рф', ['idn_conversion' => false]);
// The domain part (яндекс.рф) stays unmodified

Ενεργοποιεί/απενεργοποιεί την υποστήριξη IDN, μπορεί επίσης να χρησιμοποιηθεί για ακριβή έλεγχο συνδυάζοντας σταθερές IDNA_* (εκτός από IDNA_ERROR_*), βλ. παράμετρο $options στην ενότητα idn_to_ascii() τεκμηρίωση για περισσότερες λεπτομέρειες.

json

Περίληψη
Η επιλογή json χρησιμοποιείται για την εύκολη μεταφόρτωση δεδομένων κωδικοποιημένων σε JSON, όπως το σώμα μιας αίτησης. Μια επικεφαλίδα Content-Type της application/json θα είναι προστεθεί εάν δεν υπάρχει ήδη επικεφαλίδα Content-Type στο μήνυμα.
Τύποι
Οποιοσδήποτε τύπος PHP που μπορεί να χρησιμοποιηθεί από τη συνάρτηση json_encode() της PHP.
Προεπιλογή
Κανένα
Σταθερή
GuzzleHttp\RequestOptions::JSON
$response = $client->request('PUT', '/put', ['json' => ['foo' => 'bar']]);

Ακολουθεί ένα παράδειγμα χρήσης του tap middleware για να δείτε ποια αίτηση αποστέλλεται μέσω του καλωδίου.

use GuzzleHttp\Middleware;

// Create a middleware that echoes parts of the request.
$tapMiddleware = Middleware::tap(function ($request) {
    echo $request->getHeaderLine('Content-Type');
    // application/json
    echo $request->getBody();
    // {"foo":"bar"}
});

// The $handler variable is the handler passed in the
// options to the client constructor.
$response = $client->request('PUT', '/put', [
    'json'    => ['foo' => 'bar'],
    'handler' => $tapMiddleware($handler)
]);

Σημείωση

Αυτή η επιλογή αίτησης δεν υποστηρίζει την προσαρμογή της επικεφαλίδας Content-Type ή οποιαδήποτε από τις επιλογές από την json_encode() της PHP function. Αν πρέπει να προσαρμόσετε αυτές τις ρυθμίσεις, τότε πρέπει να περάσετε την εντολή JSON κωδικοποιημένα δεδομένα στην αίτηση εσείς οι ίδιοι χρησιμοποιώντας την body αίτηση και πρέπει να καθορίσετε τη σωστή κεφαλίδα Content-Type χρησιμοποιώντας την επιλογή headers επιλογή αίτησης.

Αυτή η επιλογή δεν μπορεί να χρησιμοποιηθεί με body, form_params, ή multipart

multipart

Περίληψη
Ορίζει το σώμα της αίτησης σε μια φόρμα multipart/form-data.
Τύποι
array
Σταθερή
GuzzleHttp\RequestOptions::MULTIPART

Η τιμή του multipart είναι ένας πίνακας συσχετιστικών πινάκων, καθένας από τους οποίους περιέχει τα ακόλουθα ζεύγη τιμών κλειδιών:

  • name: (string, υποχρεωτικό) το όνομα του πεδίου της φόρμας
  • contents: (StreamInterface/resource/string, απαιτείται) Τα δεδομένα που θα χρησιμοποιηθούν στο το στοιχείο της φόρμας.
  • headers: (array) Προαιρετικός συσχετιστικός πίνακας προσαρμοσμένων επικεφαλίδων για χρήση με το το στοιχείο της φόρμας.
  • filename: (string) Προαιρετική συμβολοσειρά που αποστέλλεται ως όνομα αρχείου στο τμήμα.
use GuzzleHttp\Psr7;

$client->request('POST', '/post', [
    'multipart' => [
        [
            'name'     => 'foo',
            'contents' => 'data',
            'headers'  => ['X-Baz' => 'bar']
        ],
        [
            'name'     => 'baz',
            'contents' => Psr7\Utils::tryFopen('/path/to/file', 'r')
        ],
        [
            'name'     => 'qux',
            'contents' => Psr7\Utils::tryFopen('/path/to/file', 'r'),
            'filename' => 'custom_filename.txt'
        ],
    ]
]);

Σημείωση

Το multipart δεν μπορεί να χρησιμοποιηθεί με την επιλογή form_params. Θα πρέπει να να χρησιμοποιήσετε τη μία ή την άλλη. Χρησιμοποιήστε form_params για application/x-www-form-urlencoded αιτήσεις, και multipart για multipart/form-data αιτήσεις.

Αυτή η επιλογή δεν μπορεί να χρησιμοποιηθεί με body, form_params, ή json

on_headers

Περίληψη

Ένα callable που καλείται όταν οι επικεφαλίδες HTTP της απόκρισης έχουν ληφθεί, αλλά το σώμα δεν έχει ακόμη αρχίσει να κατεβαίνει

Τύποι
  • callable
Σταθερή

GuzzleHttp\RequestOptions::ON_HEADERS

Το callable δέχεται ένα αντικείμενο Psr\Http\Message\ResponseInterface. Εάν μια εξαίρεση εκπέμπεται από το callable, τότε η υπόσχεση που σχετίζεται με την απόκριση θα απορρίπτεται με ένα GuzzleHttp\Exception\RequestException που περιβάλλει την εξαίρεση που προκλήθηκε.

Μπορεί να χρειαστεί να γνωρίζετε τις επικεφαλίδες και τους κωδικούς κατάστασης που ελήφθησαν πριν τα δεδομένα εγγραφούν στον αποδέκτη.

// Reject responses that are greater than 1024 bytes.
$client->request('GET', 'http://httpbin.org/stream/1024', [
    'on_headers' => function (ResponseInterface $response) {
        if ($response->getHeaderLine('Content-Length') > 1024) {
            throw new \Exception('The file is too big!');
        }
    }
]);

Σημείωση

Όταν γράφετε χειριστές HTTP, πρέπει να καλείται η συνάρτηση on_headers πριν από την εγγραφή δεδομένων στο σώμα της απόκρισης.

on_stats

Περίληψη

on_stats σας επιτρέπει να αποκτήσετε πρόσβαση στα στατιστικά στοιχεία μεταφοράς μιας αίτησης και να έχετε πρόσβαση στις λεπτομέρειες μεταφοράς χαμηλότερου επιπέδου του χειριστή που σχετίζονται με τον πελάτη σας. on_stats είναι ένα callable που καλείται όταν ένας χειριστής έχει ολοκληρώσει την αποστολή μιας αίτησης. Το callback καλείται με στατιστικά στοιχεία μεταφοράς σχετικά με την αίτηση, την απάντηση που ελήφθη ή την σφάλμα που παρουσιάστηκε. Στα δεδομένα περιλαμβάνεται ο συνολικός χρόνος που χρειάστηκε για την αποστολή της αίτησης

Τύποι
  • callable
Σταθερή

GuzzleHttp\RequestOptions::ON_STATS

Το callable δέχεται ένα αντικείμενο GuzzleHttp\TransferStats.

use GuzzleHttp\TransferStats;

$client = new GuzzleHttp\Client();

$client->request('GET', 'http://httpbin.org/stream/1024', [
    'on_stats' => function (TransferStats $stats) {
        echo $stats->getEffectiveUri() . "\n";
        echo $stats->getTransferTime() . "\n";
        var_dump($stats->getHandlerStats());

        // You must check if a response was received before using the
        // response object.
        if ($stats->hasResponse()) {
            echo $stats->getResponse()->getStatusCode();
        } else {
            // Error data is handler specific. You will need to know what
            // type of error data your handler uses before using this
            // value.
            var_dump($stats->getHandlerErrorData());
        }
    }
]);

progress

Περίληψη

Ορίζει μια συνάρτηση που θα καλείται όταν σημειώνεται πρόοδος στη μεταφορά

Τύποι
  • callable
Προεπιλογή

Κανένα

Σταθερή

GuzzleHttp\RequestOptions::PROGRESS

Η συνάρτηση δέχεται τα ακόλουθα ορίσματα θέσης:

  • ο συνολικός αριθμός των bytes που αναμένεται να μεταφορτωθούν, μηδέν εάν είναι άγνωστος
  • ο αριθμός των bytes που έχουν ληφθεί μέχρι στιγμής
  • ο συνολικός αριθμός των bytes που αναμένεται να μεταφορτωθούν
  • ο αριθμός των bytes που έχουν μεταφορτωθεί μέχρι στιγμής
// Send a GET request to /get?foo=bar
$result = $client->request(
    'GET',
    '/',
    [
        'progress' => function(
            $downloadTotal,
            $downloadedBytes,
            $uploadTotal,
            $uploadedBytes
        ) {
            //do something
        },
    ]
);

proxy

Περίληψη

Περάστε μια συμβολοσειρά για να καθορίσετε έναν διακομιστή μεσολάβησης HTTP, ή έναν πίνακα για να καθορίσετε διαφορετικούς μεσάζοντες για διαφορετικά πρωτόκολλα

Τύποι
  • string
  • array
Προεπιλογή

Κανένα

Σταθερή

GuzzleHttp\RequestOptions::PROXY

Περάστε μια συμβολοσειρά για να καθορίσετε έναν διακομιστή μεσολάβησης για όλα τα πρωτόκολλα.

$client->request('GET', '/', ['proxy' => 'http://localhost:8125']);

Περάστε έναν συσχετιστικό πίνακα για να καθορίσετε μεσάζοντες HTTP για συγκεκριμένα σχήματα URI (π.χ. "http", "https"). Παρέχετε ένα no ζεύγος τιμών-κλειδιών για να παρέχετε μια λίστα από ονομάτων κεντρικών υπολογιστών στα οποία δεν θα πρέπει να γίνεται μεσολάβηση.

Σημείωση

Το Guzzle θα συμπληρώσει αυτόματα αυτή την τιμή με την τιμή του περιβάλλοντός σας NO_PROXY μεταβλητή περιβάλλοντος. Ωστόσο, όταν παρέχετε μια proxy επιλογή αίτησης, εναπόκειται σε εσάς να παρέχετε την τιμή no που αναλύεται από την τη μεταβλητή περιβάλλοντος NO_PROXY (π.χ., explode(',', getenv('NO_PROXY'))).

$client->request('GET', '/', [
    'proxy' => [
        'http'  => 'http://localhost:8125', // Use this proxy with "http"
        'https' => 'http://localhost:9124', // Use this proxy with "https",
        'no' => ['.mit.edu', 'foo.com']    // Don't use a proxy with these
    ]
]);

Σημείωση

Μπορείτε να παρέχετε διευθύνσεις URL μεσολάβησης που περιέχουν ένα σχήμα, όνομα χρήστη και κωδικό πρόσβασης. Για παράδειγμα, "http://username:[email protected]:10".

query

Περίληψη

Συναρτησιακός πίνακας τιμών συμβολοσειράς ερωτήματος ή συμβολοσειρά ερωτήματος για προσθήκη σε το αίτημα

Τύποι
  • array
  • string
Προεπιλογή

Κανένα

Σταθερή

GuzzleHttp\RequestOptions::QUERY

// Send a GET request to /get?foo=bar
$client->request('GET', '/get', ['query' => ['foo' => 'bar']]);

Οι συμβολοσειρές ερωτήσεων που καθορίζονται στην επιλογή query θα αντικαταστήσουν όλες τις τιμές των συμβολοσειρών ερωτήσεων που παρέχονται στο URI μιας αίτησης.

// Send a GET request to /get?foo=bar
$client->request('GET', '/get?abc=123', ['query' => ['foo' => 'bar']]);

read_timeout

Περίληψη
Float που περιγράφει το χρονικό όριο που πρέπει να χρησιμοποιείται κατά την ανάγνωση ενός σώματος ροής
Τύποι
float
Προεπιλογή
Έχει ως προεπιλογή την τιμή της default_socket_timeout ρύθμισης PHP ini
Σταθερή
GuzzleHttp\RequestOptions::READ_TIMEOUT

Το χρονικό όριο ισχύει για μεμονωμένες λειτουργίες ανάγνωσης σε ένα σώμα με ροή (όταν η επιλογή stream είναι ενεργοποιημένη).

$response = $client->request('GET', '/stream', [
    'stream' => true,
    'read_timeout' => 10,
]);

$body = $response->getBody();

// Returns false on timeout
$data = $body->read(1024);

// Returns false on timeout
$line = fgets($body->detach());

sink

Περίληψη

Καθορίστε πού θα αποθηκεύεται το σώμα μιας απάντησης.

Τύποι
  • string (διαδρομή προς το αρχείο στο δίσκο)
  • fopen() resource
  • Psr\Http\Message\StreamInterface
Προεπιλογή

PHP temp stream

Σταθερή

GuzzleHttp\RequestOptions::SINK

Περάστε μια συμβολοσειρά για να καθορίσετε τη διαδρομή προς ένα αρχείο που θα αποθηκεύσει τα περιεχόμενα του σώματος απόκρισης:

$client->request('GET', '/stream/20', ['sink' => '/path/to/file']);

Περάστε έναν πόρο που επιστρέφεται από την fopen() για να γράψετε την απόκριση σε μια ροή PHP:

$resource = \GuzzleHttp\Psr7\Utils::tryFopen('/path/to/file', 'w');
$client->request('GET', '/stream/20', ['sink' => $resource]);

Περάστε ένα αντικείμενο Psr\Http\Message\StreamInterface για τη ροή του σώματος της απάντησης σε μια ανοικτή ροή PSR-7.

$resource = \GuzzleHttp\Psr7\Utils::tryFopen('/path/to/file', 'w');
$stream = \GuzzleHttp\Psr7\Utils::streamFor($resource);
$client->request('GET', '/stream/20', ['save_to' => $stream]);

Σημείωση

Η επιλογή αίτησης save_to έχει καταργηθεί υπέρ της επιλογής sink επιλογή αίτησης. Η παροχή της επιλογής save_to είναι πλέον ένα ψευδώνυμο του sink.

ssl_key

Περίληψη

Καθορίστε τη διαδρομή προς ένα αρχείο που περιέχει ένα ιδιωτικό κλειδί SSL σε PEM μορφή. Εάν απαιτείται κωδικός πρόσβασης, τότε ορίστε έναν πίνακα που περιέχει τη διαδρομή στο κλειδί SSL στο πρώτο στοιχείο του πίνακα, ακολουθούμενο από τον απαιτούμενο κωδικό πρόσβασης. για το πιστοποιητικό στο δεύτερο στοιχείο

Τύποι
  • string
  • array
Προεπιλογή

Κανένα

Σταθερή

GuzzleHttp\RequestOptions::SSL_KEY

Σημείωση

ssl_key υλοποιείται από τους χειριστές HTTP. Αυτό είναι προς το παρόν μόνο υποστηρίζεται μόνο από τον χειριστή cURL, αλλά μπορεί να υποστηρίζεται και από άλλα τρίτα μέρη handlers.

stream

Περίληψη
Ρυθμίστε σε true για να μεταφέρετε μια απάντηση σε ροή αντί να τη μεταφορτώσετε ολόκληρη. εκ των προτέρων.
Τύποι
bool
Προεπιλογή
false
Σταθερή
GuzzleHttp\RequestOptions::STREAM
$response = $client->request('GET', '/stream/20', ['stream' => true]);
// Read bytes off of the stream until the end of the stream is reached
$body = $response->getBody();
while (!$body->eof()) {
    echo $body->read(1024);
}

Σημείωση

Η υποστήριξη απόκρισης ροής πρέπει να υλοποιείται από τον χειριστή HTTP που χρησιμοποιείται από το ένας πελάτης. Αυτή η επιλογή μπορεί να μην υποστηρίζεται από κάθε χειριστή HTTP, αλλά το διεπαφή του αντικειμένου απόκρισης παραμένει η ίδια, ανεξάρτητα από το αν ή όχι υποστηρίζεται από τον χειριστή.

synchronous

Περίληψη
Ορίστε την τιμή true για να ενημερώσετε τους χειριστές HTTP ότι σκοπεύετε να περιμένετε το απάντηση. Αυτό μπορεί να είναι χρήσιμο για βελτιστοποιήσεις.
Τύποι
bool
Προεπιλογή
κανένας
Σταθερή
GuzzleHttp\RequestOptions::SYNCHRONOUS

verify

Περίληψη

Περιγράφει τη συμπεριφορά επαλήθευσης πιστοποιητικού SSL σε ένα αίτημα

  • Ορίστε την τιμή true για να ενεργοποιήσετε την επαλήθευση πιστοποιητικού SSL και να χρησιμοποιήσετε την προεπιλεγμένη δέσμη CA που παρέχεται από το λειτουργικό σύστημα.
  • Ορίστε την τιμή false για να απενεργοποιήσετε την επαλήθευση πιστοποιητικών (αυτό είναι ανασφαλές!)
  • Ορίστε σε μια συμβολοσειρά για να δώσετε τη διαδρομή προς ένα πακέτο CA για να ενεργοποιήσετε την επαλήθευση χρησιμοποιώντας ένα προσαρμοσμένο πιστοποιητικό.
Τύποι
  • bool
  • string
Προεπιλογή

true

Σταθερή

GuzzleHttp\RequestOptions::VERIFY

// Use the system's CA bundle (this is the default setting)
$client->request('GET', '/', ['verify' => true]);

// Use a custom SSL certificate on disk.
$client->request('GET', '/', ['verify' => '/path/to/cert.pem']);

// Disable validation entirely (don't do this!).
$client->request('GET', '/', ['verify' => false]);

Εάν δεν χρειάζεστε μια συγκεκριμένη δέσμη πιστοποιητικών, τότε η Mozilla παρέχει ένα συχνά χρησιμοποιούμενη δέσμη CA, την οποία μπορείτε να κατεβάσετε εδώ (παρέχεται από τον συντηρητή του cURL). Μόλις έχετε ένα πακέτο CA διαθέσιμο στο δίσκο, μπορείτε να ορίσετε τη ρύθμιση "openssl.cafile" PHP ini να δείχνει τη διαδρομή προς το το αρχείο, επιτρέποντάς σας να παραλείψετε την επιλογή αίτησης "verify". Πολύ περισσότερες λεπτομέρειες σχετικά με πιστοποιητικά SSL μπορείτε να βρείτε στην ιστοσελίδα ιστοσελίδα του cURL.

timeout

Περίληψη
Κινητή τιμή που περιγράφει το συνολικό χρονικό όριο της αίτησης σε δευτερόλεπτα. Χρησιμοποιήστε 0 για να περιμένετε επ' αόριστον (η προεπιλεγμένη συμπεριφορά).
Τύποι
float
Προεπιλογή
0
Σταθερή
GuzzleHttp\RequestOptions::TIMEOUT
// Timeout if a server does not return a response in 3.14 seconds.
$client->request('GET', '/delay/5', ['timeout' => 3.14]);
// PHP Fatal error:  Uncaught exception 'GuzzleHttp\Exception\TransferException'

version

Περίληψη
Έκδοση πρωτοκόλλου που θα χρησιμοποιηθεί με την αίτηση.
Τύποι
string, float
Προεπιλογή
1.1
Σταθερή
GuzzleHttp\RequestOptions::VERSION
// Force HTTP/1.0
$request = $client->request('GET', '/get', ['version' => 1.0]);