kohana 3.1 Внешний запрос: приложение POST / xml не работает с собственным исполнением - PullRequest
0 голосов
/ 27 июня 2011

Я пытаюсь выполнить внешний запрос с Kohana 3.1 с этим кодом в моем контроллере.

$request = Request::factory($url);
$request->method(Request::POST);
$request->body($xml);
$request->headers('Content-Type', 'application/xml');
$response = $request->execute();

Я получаю эту ошибку:

HTTP_Exception_500 [ 500 ]: Kohana_HTTP_Header_Value::__construct unknown header value type: integer. array or string allowed.

После некоторых исследований кода я обнаружил, что это проблема с функцией _native_execute класса Kohana_Request_Client_External.

Эта функция устанавливает 'content-length' следующим образом:

$body = $request->body();
$request->headers('content-length', strlen($body));

Но $request->header(...) ожидает строку или массив для второго параметра, а strlen возвращает целое число.

Это ошибка? Я исправил это так $request->headers('content-length', (string)strlen($body));

Тогда я получил еще одну ошибку:

ErrorException [ Warning ]: fopen(http://xxx.xxx.xxx.xxx/yyyyy) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: HTTP wrapper does not support writeable connections

Эта ошибка возникает из этой строки кода $mode = ($request->method() === HTTP_Request::GET) ? 'r' : 'r+'; снова в _native_execute.

Я заставил значение $mode равным r, и теперь оно работает. Эти две ошибки - ошибки, или я делаю что-то не так?

1 Ответ

2 голосов
/ 27 июня 2011

Это ошибка, исправленная в ветке 3.1 / development. Он будет выпущен в следующем выпуске (в ближайшее время).

...