PHP HTTP头REST

PHP HTTP头REST,php,http-headers,get,pear,put,Php,Http Headers,Get,Pear,Put,我正在使用PHP和PEAR HTTP请求包为REST存储库开发一个UI(http://pear.php.net/package/HTTP_Request/). 我创建了一个HTTPGET请求,它按预期交付了请求的rdf/xml文件。但我想延长这个请求,但我无法让它工作。 存储库允许发送附加到id的zip文件。因此,我必须调用传递rdf/xml数据的相同URL,但在执行请求之前,我必须将HTTP GET头从xml更改为accept:application/zip。这应该提供zip文件,而不是rdf

我正在使用PHP和PEAR HTTP请求包为REST存储库开发一个UI(http://pear.php.net/package/HTTP_Request/). 我创建了一个HTTPGET请求,它按预期交付了请求的rdf/xml文件。但我想延长这个请求,但我无法让它工作。 存储库允许发送附加到id的zip文件。因此,我必须调用传递rdf/xml数据的相同URL,但在执行请求之前,我必须将HTTP GET头从xml更改为accept:application/zip。这应该提供zip文件,而不是rdf/xml文件

$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请求。有人知道怎么做吗


请帮帮我!谢谢

要修改请求头,请查看HTTP_请求对象的addHeader()方法:


要更改方法,请使用setMethod():

对于第一个问题,您可以通过以下方式设置GET请求标头的Accept字段:

$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');

阅读更多信息。

@PUT:我可以用addFile添加几个文件吗,因为我必须向REST存储库提交一个rdf/xml文件(可选zip存档)?@Matt如果服务器允许您在一个请求中发送多个文件,那么您可以。请注意,有一个上载限制,即上载的最大总文件大小。如果你把这个标记为一个可接受的答案,那就太好了:)好的。GET问题已经解决,但我仍然需要处理PUT。谢谢