2011-02-02 2 views
1

Я разрабатываю пользовательский интерфейс для репозитория REST с помощью PHP и пакета PEAR HTTP REQUEST (http://pear.php.net/package/HTTP_Request/). Я создал запрос HTTP GET, и он поставляет запрошенный файл rdf/xml, как и ожидалось. Но я хочу расширить этот запрос, и я не могу заставить это работать. Репозиторий позволяет отправлять почтовые файлы, прикрепленные к идентификатору. Поэтому мне нужно вызвать тот же URL-адрес, который предоставляет данные rdf/xml, но я должен изменить заголовок HTTP GET из xml, чтобы принять: application/zip, перед выполнением моего запроса. Это должно поставить zip вместо файла rdf/xml.PHP HTTP-заголовок REST

$req =& new HTTP_Request(); 
$req->setMethod(HTTP_REQUEST_METHOD_GET); 
$req->setURL($url); 
$req->clearPostData(); 
if (!PEAR::isError($req->sendRequest())) { 
    $response2 = $req->getResponseBody(); 
} else { 
    $response2 = ""; 
} 

echo $response2; 

Кто-нибудь знает, как изменить вызов GET, чтобы это сделать? Мне действительно нужна помощь!

Кроме того, я хочу создать запрос HTTP PUT, который использует multipart/form-data. Кто-нибудь знает, как это сделать?

Пожалуйста, помогите! Благодаря!

ответ

2

Для вашего первого вопроса, вы можете установить Accept поле вашего заголовка запроса GET по:

$req->addHeader('Accept', 'application/zip'); 
# assuming that this will trigger the server to respond with the zip and not xml 

Вопрос № 2:

# Set method to PUT 
$req->setMethod(HTTP_REQUEST_METHOD_PUT); 

# Attach file to request 
$req->addFile('file_upload_field', '/path/to/file.ext', 'application/zip'); 

Читайте больше на file uploads using HTTP_Request.

+0

спасибо! Запрос GET работает отлично! – Matt

+0

@ PUT: Могу ли я добавить с addFile несколько файлов, beacuse? Я должен отправить файл rdf/xml в репозиторий REST, возможно, zip-архив? – Matt

+0

@Matt, если сервер позволяет отправлять несколько файлов в один запрос, то вы можете. Просто отметьте, что существует ограничение на загрузку или максимальный общий размер файлов для загрузки. И было бы здорово, если бы вы отметили это как принятый ответ :) – Arvin