gpt4 book ai didi

api - 使用 CakePHP 通过 Put 发送 XML

转载 作者:行者123 更新时间:2023-12-02 20:21:02 26 4
gpt4 key购买 nike

我想向 API 发送 put 请求,该 API 需要 XML 格式的请求详细信息

显然,在 PHP 中使用 PUT 时,我需要将 xml 作为文件发送。

我该怎么做?

这是我正在尝试的:

$HttpSocket = new HttpSocket();
$result = $HttpSocket->put($put, $fh);

其中 $put 是 url,$fh 是我像这样动态创建的文件

$xmlObject = Xml::fromArray($xmlArray);
$xmlString = $xmlObject->asXML();

$fh = fopen('php://memory', 'rw');
fwrite($fh, $xmlString);
rewind($fh);

最佳答案

我在 cake 2.0.5 上测试过它,HttpSocket::put 可以将键值数组或原始字符串作为 postdata 发送。

因此,您可以直接发送 xml 字符串,远程服务器将在 Raw Post Data i 中读取它。 e. file_get_contents("php://input")

这有效:

$http = new HttpSocket();
$xml_data = Xml::fromArray($data);
$xml_string = $xml_data->asXML();
$response = $http->put('http://example.com', $xml_string);

为了演示它,我创建了一个名为 RequestXmlTestController 的 Controller ,并在 'Controllers/RequestXmlTestController.php' 下归档。 (代码如下),并在 'RequestXmlTests/index.ctp' 下提交一个空 View 。

Controller 代码:

<?php
App::uses('AppController', 'Controller');
/**
* RequestXmlTest Controller
*
*/
class RequestXmlTestController extends AppController {
/**
* Use no Model
*/
public $uses = array();

/**
* index action
*/
public function index(){
App::uses('HttpSocket', 'Network/Http');
App::uses('Xml', 'Utility');
$http = new HttpSocket();

$data = array(
'type' => array('name' => 'Campaign', 'data' => array(
array('name' => 'Come eat at Joe\'s', 'products' => array('adserver', 'analytics'))
))
);
$xml_data = Xml::fromArray($data);
$xml_string = $xml_data->asXML();
$response = $http->put(Router::url(array('action' => 'test'), true), $xml_string);
debug($response);
}

/**
* test action
* Test the requests and dump Raw Post Data and Cake's Request object
*/
public function test(){
var_dump(array('raw_post_data' => file_get_contents("php://input")));
echo "\n\n";
var_dump($this->request);
exit;
$this->render('index');
}

}

引用文献: HttpSocket Documentation

关于api - 使用 CakePHP 通过 Put 发送 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8799807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com