Php 如何使用Guzzle通过URl将数据传递给另一个应用程序?

Php 如何使用Guzzle通过URl将数据传递给另一个应用程序?,php,laravel,api,laravel-5,guzzle,Php,Laravel,Api,Laravel 5,Guzzle,我想将数据从一个应用程序发送到另一个应用程序。。我想将第一份申请数据发送到第二份申请表。。 为此,我用了狂饮。我用的平台是拉威尔 以下是第一个应用程序控制器: public function store(Request $request) { $payment = new Payment(); $payment->username = $request->Input(['username']); $payment->pri

我想将数据从一个应用程序发送到另一个应用程序。。我想将第一份申请数据发送到第二份申请表。。 为此,我用了狂饮。我用的平台是拉威尔

以下是第一个应用程序控制器:

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() !!}

但我面临的问题是,我无法通过Guzzle发送store_id,因为当我添加输出时,我看到响应为空。意味着我无法通过URL发送商店id。有人能建议我如何传递form_参数吗?

我刚刚用两个laravel实例测试了这段代码,它正在工作。您只需要在正在传递的参数中添加查询

您的第一个应用程序从此处调用第二个应用程序:

$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);

我尝试过路由和其他重定向方法,但找不到任何简单的方法来执行该任务。如果有任何更简单的方法,任何人都可以纠正我。

您的第二个应用程序是否有不同的laravel,或者它位于同一个位置?不同的laravel应用程序只需添加此代码return$response->getBody;在您的$client->请求并向我们显示该代码的响应后,我得到的相同错误意味着上面的错误。我希望第二个应用程序没有获得您发布的表单数据,或者它可能正在创建视图。只需调试路由::获取是否接收到参数。您可以通过这个示例检查,我有一个查询,我可以将数据发送到另一个应用程序,但路由中存在一个问题,即请求是否应该在其他应用程序中?因为我看到了名字http://localhost/a/public/store 然而它应该是http://localhost/b/public/api/getPayment 为什么,你能给我一个适当的解释吗?我不明白你在说什么。你能详细说明一下吗?意思是当我在URL中向另一个应用程序发送数据时,我看到的是旧的应用程序链接,而不是新的应用程序链接。我就是这么想的asking@Hola因为我们只是从第二个应用程序请求,所以我们不会更改url。那么,您是否有用于更改url的场景?是的,有点像这样,因为我想让用户访问第二个应用程序。你有什么建议吗?
$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);
return redirect()->to('http://127.0.0.2:8000?page=2');