2016-07-25 12 views
0

Ich habe versucht, benutzerdefinierte Header in Zend-Anfrage zu setzen. Ich erhalte die folgenden Fehler:Zend Header-Problem

Argument 1 passed to Zend\\Http\\AbstractMessage::setHeaders() must be an instance of Zend\\Http\\Headers, array given 

Unten ist mein Codebeispiel:

<?php 
$request = new Request(); 
$request->setContent($parameters); 
$request->setMethod(Request::METHOD_POST); 
$request->setHeaders(array("Authorization: MyAuth $authId")); 
$request->setUri($url); 

Ich habe auch versucht die Header im String-Format zu geben. Aber ich stehe immer noch vor dem gleichen Fehler. Kann jemand herausfinden, welches Problem hier in den Kopfzeilen gesetzt wird?

Antwort

1

Der Fehler sagt alles, die setHeaders erwartet ein Objekt des Typs \Zend\HTTP\Headers.

versuchen, das Objekt zu erstellen zuerst:

$headers = new \Zend\Http\Headers(); 
$headers->addHeaderLine('[YOUR HEADER LINE]'); 

$request->setHeaders($headers); 
+0

Es funktionierte erstellen. danke –

0

$request->setHeaders() eine Instanz von Zend\Http\Headers() als Parameter will. So können Sie eine Instanz

$headers = new Zend\Http\Headers(); 
$headers->addHeaders("Authorization","MyAuth ".$authId); 

oder

$headers = Zend\Http\Headers::fromString($headerString); 

prüfen this

+0

Sie müssen eine vollständige Header-Zeichenfolge wie geben; '$ headerString = <<< EOB Host: www.example.com Content-Type: text/html Content-Length: 1337 Authorization: MyAuth $ AUTHID EOB;' – sozkul

+0

Yeah .. Dank für die Lösung. Es funktioniert, wenn wir den vollständigen Header-String angeben. –