我在Laravel 5.4
中构建了一个小应用程序,我通过GuzzleHttp
在API调用中遇到了困难,我试图调用route
在我的api.php
:
Route::post('/request', 'HomeController@getRequest');
在我的控制器中我打电话:
public function __construct(GuzzleHttp\Client $client)
{
$this->client = $client;
}
public function getRequest( Request $request)
{
$request = $this->client->post($request->url, [$request->request_data]);
$response = \GuzzleHttp\json_decode($request->getBody());
return response()->json(['data' => json_decode($response->d)], $request->getStatusCode());
}
我插入的数据值:
{"url":"http://demo.conxn.co.in/CoxnsvcA.svc/Login","request_data":{"username":"********","password":"*******","client_secret_key":"rybbdk23dsaxxmYTHJKFHJSKksdfljsdf"}}
我收到错误:
但在使用postman API测试仪时,我得到了合适的结果。
帮我解决这个问题。
答案 0 :(得分:0)
您以错误的方式发布JSON数据,您可以使用内置的JSON选项,该选项用于轻松上传JSON编码数据作为请求的正文。如果消息上没有Content-Type标头,则会添加application / json的Content-Type标头。
您可以在http://docs.guzzlephp.org/en/latest/request-options.html#json
找到更多详细信息这是您更新的代码
public function __construct(GuzzleHttp\Client $client)
{
$this->client = $client;
}
public function getRequest( Request $request)
{
$request = $this->client->post($request->url,GuzzleHttp\RequestOptions::JSON =>[$request>request_data]);
$response = \GuzzleHttp\json_decode($request->getBody());
return response()->json(['data' => json_decode($response->d)],$request->getStatusCode());
}
答案 1 :(得分:0)
也许你可以试试这个方法
public function getRequest(Request $request)
{
$client = New GuzzleHttpClient();
$input = $request->all();
unset($input['_token']);
//Post to server
$request = $client->request('POST','url',[
'form_params' => [
'inputcontent' => $input['inputcontent'],
]
]);