我想将数据从一个应用程序发送到另一个应用程序..我想将第一个应用程序数据发送到第二个应用程序表单。 为此,我用了guzzle。我使用Laravel的平台。
这是第一个应用程序控制器:
public function store(Request $request)
{
$payment = new Payment();
$payment->username = $request->Input(['username']);
$payment->price = $request->Input(['price']);
$payment->purchase_id = $request->Input(['purchase_id']);
$payment->save();
$store_id =\Hash::make($payment->id);
$price = $payment->price;
$client = new Client();
$response = $client->request('GET', 'http://localhost/b/public/api/getPayment/{store_id}',[
'form_params'=>['store_id'=>$store_id]
]);
}
第二个申请表:
{!! Form::open(['method' => 'POST', 'route' => 'store', 'class'=>'form-horizontal','enctype'=>'multipart/form-data']) !!}
{!! csrf_field() ; !!}
<div class="form-group">
<label>Store ID</label>
<input type="text" class="form-control" name="storeId" value="{{$store_id}}" placeholder="Store ID">
</div>
<button type="submit" class="btn btn-default">Submit</button>
{!! Form::close() !!}
在第二个控制器中,我将路线放在api.php
中Route::get('/getPayment/{store_id}',[
'uses'=>'PaymentController@create',
'as'=>'create'
]);
但是我面临的问题是我无法通过Guzzle发送store_id
。因为当我dd()输出时,我看到了响应NULL
。意味着我无法通过URL发送store_id ..任何人都可以建议我如何通过form_parameter
答案 0 :(得分:1)
我刚用两个laravel实例测试了这段代码,它正在运行。您只需要在传递的参数中添加query
。
您的第一个应用程序从此处调用第二个应用程序:
$data = [
'query' => [ 'page' => '2']
];
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'http://127.0.0.2:8000/path', $data);
echo $response->getBody();
现在,由guzzle调用的第二个应用程序的路径如下:
use Illuminate\Http\Request;
Route::get('/path', function (Request $request) {
return $request->all();
});
因此,您的代码需要更改为:
$data = [ 'query' => //<==add 'query' here
['form_params'=>
['store_id'=>$store_id]
]
];
$client = new Client();
$response = $client->request('GET', 'http://localhost/b/public/api/getPayment', $data);
如果您想了解更多关于它所在的query
字符串:
http://docs.guzzlephp.org/en/latest/quickstart.html#query-string-parameters
希望它对你有所帮助。
修改强>
根据您的需要,您可能不需要guzzle
,但要重定向到具有额外参数的位置,您需要使用redirect()
,如:
return redirect()->to('http://127.0.0.2:8000?page=2');
我尝试了route()
和其他redirect()
方法,但无法找到执行任务的简单方法。如果有任何更简单的方法,任何人都可以纠正我。