GuzzleHttp请求无效



我试图用symfony 3.4中的guzzlehttp/guzzle捆绑包从后端向我的NodeJS测试服务器发出HTTP请求。我试着用poster和cURL测试我的nodeJS服务器,它可以工作,但不能用我的后端。

这是我的代码:

PartnerController.php中的
/**
* @POST("/partner/searchNurseToUser")
*/
public function searchNurseAction(Request $request)
{
$client = new Client(['base_uri' => 'http://172.18.0.5:9000']);  
$nurseFirstname = htmlspecialchars($request->request->get('nurseFirstname'));
$nurseLastname = htmlspecialchars($request->request->get('nurseLastname'));
$nursePhone = htmlspecialchars($request->request->get('nursePhoneNumber'));
$nursePostalCode = htmlspecialchars($request->request->get('nursePostalCode'));
$nurseCity = htmlspecialchars($request->request->get('nurseCity'));

try {
$response = $client->request('POST', 'partner/pros/', [
'json' => [
'name' => $nurseFirstname . ' ' . $nurseLastname, 
'city' => $nurseCity,  
'phone' => $nursePhone,
'zipcode' => $nursePostalCode
]
]);
app.js中的
const bodyParser = require('body-parser');

const app = express();
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false })) 
// Define routes
app.use('/partner/', require('./routes/api/partner'));

const port = 9000;
app.listen(port, function() {
console.log('Listening on port 9000!')
})
  • 合作伙伴.js:
const router = express.Router();
router.post('/pros', async (req, res) => {
const { name, email, phone, city, zipcode } = req.body;
try {
let response = {};
if (name || email || phone || city || zipcode) {
response = {
"data": [
{
"civility": "F",
"firstname": "Adeline",
"lastname": "Dupont"
}
]
}
} else {
response = [];
}
return res.json(response).status(200);
} catch (err) {
console.error(err.message);
res.status(500).send('Server error');
}
})
module.exports = router;

但是邮差返回了这个错误信息:

Error GuzzleHttp Message Error "Resources are not supported in serialized data. Path: GuzzleHttp\Psr7\Stream".

谢谢你的帮助!

我找到了解决方案!!

只需在我的函数searchNurseAction的返回中使用JsonResponse!

/**
* @POST("/partner/searchNurseToUser")
*/
public function searchNurseAction(Request $request)
{
$client = new Client(['base_uri' => 'http://172.18.0.5:9000']);  
$nurseFirstname = htmlspecialchars($request->request->get('nurseFirstname'));
$nurseLastname = htmlspecialchars($request->request->get('nurseLastname'));
$nursePhone = htmlspecialchars($request->request->get('nursePhoneNumber'));
$nursePostalCode = htmlspecialchars($request->request->get('nursePostalCode'));
$nurseCity = htmlspecialchars($request->request->get('nurseCity'));
$response = $client->request('POST', 'partner/pros/', [
'form_params' => [
'name' => $nurseFirstname . ' ' . $nurseLastname, 
'city' => $nurseCity,  
'phone' => $nursePhone,
'zipcode' => $nursePostalCode,
'job' => 1
]
]);

try {
if($response->getStatusCode() === 200 || $response->getStatusCode() === 204){
$nurses = $response->getBody();
$ret = array(
'nurses' => $nurses,
'status' => 200,
);
return new JsonResponse($nurses, 200, [], true);
}
} catch (Exception $e) {
$ret = array(
'error' => $e->getMessage(),
);

return new JsonResponse($e, 500, [], true);
}
}  

而不是:

/**
* @POST("/partner/searchNurseToUser")
*/
public function searchNurseAction(Request $request)
{
$client = new Client(['base_uri' => 'http://172.18.0.5:9000']);
$nurseFirstname = htmlspecialchars($request->request->get('nurseFirstname'));
$nurseLastname = htmlspecialchars($request->request->get('nurseLastname'));
$nursePhone = htmlspecialchars($request->request->get('nursePhoneNumber'));
$nursePostalCode = htmlspecialchars($request->request->get('nursePostalCode'));
$nurseCity = htmlspecialchars($request->request->get('nurseCity'));
$response = $client->request('POST', 'partner/pros/', [
'form_params' => [
'name' => $nurseFirstname . ' ' . $nurseLastname, 
'city' => $nurseCity,  
'phone' => $nursePhone,
'zipcode' => $nursePostalCode,
'job' => 1
]
]);
try {
if($response->getStatusCode() === 200 || $response->getStatusCode() === 204){
$nurses = $response->getBody();
$ret = array(
'nurses' => $nurses,
'status' => 200,
);
$view = $this->view($ret);
}
} catch (Exception $e) {
$ret = array(
'error' => $e->getMessage(),
);
$view = $this->view($ret, 500);
}
return $this->handleView($view);
}

对不起,我的问题不完整。谢谢

最新更新