我尝试使用Guzzle发送POST请求到我的Web服务。此服务接受身体作为原始。它的工作正常,当我使用 Postman ,但我不使用Guzzle。当使用Guzzle,我只得到Web服务的描述,因为我把Web服务的URL在浏览器中。这里是我的代码:
$body = "CA::Read:PackageItems (CustomerId='xxxxxx',AllPackages=TRUE);";
$headers = [
....
....
];
$client = new Client();
$response = $client->request('POST', 'http://172.19.34.67:9882/TisService',$headers,$body);
echo $body = $response->getBody();
似乎标题或正文未通过。
3条答案
按热度按时间ve7v8dk21#
像这样试试
4dbbbstv2#
我最近不得不第一次实现
Guzzle
,它是一个使用起来相当简单的库。首先,我创建了一个新客户端
然后我创建了一个
POST
请求,而不是我如何使用new Request
代替$client->request(...
,尽管我使用了new Request
,但这并不重要。所以本质上它看起来像
$this->headers
是一个简单的键值对数组,由我们的请求头组成,确保设置Content-Type
头,$this->body
是一个简单的字符串对象,在我的例子中,它形成了一个JSON主体。然后我可以调用
$client->send(...
方法来发送请求,如下所示:$this->_options
是一个简单的键-值对数组,同样比headers
数组简单,但它包含了timeout
之类的内容。对于我来说,我创建了一个简单的
Factory
对象,称为HttpClient
,它为我构造了整个Guzzle
请求,这就是为什么我只是创建一个新的Request
对象,而不是调用$client->request(...
,后者也将发送请求。yqlxgs2m3#
要发送原始数据,您需要做的基本工作是对
$data
的一个数组进行json_encode,并在请求body
中发送它。使用大量请求
GuzzleHttp\Psr7\Request;
和客户端GuzzleHttp\Client