راکت
حل شده

ارسال و دریافت از api

14 پاسخ

دوستان من پروژم لاراوله میخوام با api یه سایت دیگه کار کنم
یه سری اطلاعات بگیرم و یه سری اطلاعات بفرستم جوابشو بگیرم
یه پکیجی نصب کردم به نا م guzzle میخوام درخواست بفرستم نمیدونم چجوری باید بفرستم
درخواستم پست باید باشه و مقادیر رو تو body باید بفرستم

ثبت پرسش جدید

پاسخ‌ها

14
ARON
ARON
@aron

تخصص: برنامه نویس

بهترین پاسخ

اینجوری اوکی شد
میزارم برای بقیه دوستان

        $client = new \GuzzleHttp\Client();
        $response = $client->request('POST', 'http://test.com:100/Api/Request/GetAgentGroup' , [
            \GuzzleHttp\RequestOptions::JSON => ['ApiKey' => 'test']
        ]);

        $response->getStatusCode(); # 200
        $response->getHeaderLine('content-type'); 
        $agents =  $response->getBody(); 
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

درود
به شسکل زیر می‌تونید یه درخواست پست بهمراه اطلاعات بدنه (body) ارسال کنید:

درنسخه های زیر ۶ پکیج Guzzle:

$client = new \GuzzleHttp\Client();
$client->post(
    'http://www.example.com/user/create',
    array(
        'body' => array(
            'email' => 'test@gmail.com',
            'password' => 'testpassword'
        )
    )
);

درنسخه ۶ به بعد پکیج Guzzle:

$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'http://www.example.com/user/create', [
    'form_params' => [
        'email' => 'test@gmail.com',
        'password' => 'testpassword',
    ]
]);
ARON
ARON
@aron

تخصص: برنامه نویس

بصورت json بخوام باشه چی؟

شاید پاسخ شما همین‌جا باشد

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

به شکل زیر:

$client = new \GuzzleHttp\Client();

$response = $client->post('url', [
    GuzzleHttp\RequestOptions::JSON => ['foo' => 'bar']
]);
ARON
ARON
@aron

تخصص: برنامه نویس

Class 'App\Http\Controllers\dashboard\GuzzleHttp\RequestOptions' not found

import هم نمیشه

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

معلومه که نمیشه. آدرس کلاسی که وارد کردید رو نگاه کنید

App\Http\Controllers\dashboard\GuzzleHttp\RequestOptions

این پکیج در نیم‌اسپیس روت موجوده نه در کنترلرها .... باید مثل زیر باشه:

\GuzzleHttp\Client()

از چه نسخه پکیج GuzzleHttp استفاده میکنید؟

ARON
ARON
@aron

تخصص: برنامه نویس

از نسخه ۶
خوب من چجوری میتونم تو کنترلر هام ازش استفاده کنم ؟

ARON
ARON
@aron

تخصص: برنامه نویس

الان این ارورو میده
Class 'Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory' not found

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

کدی که دارید داخل کنترلر استفاده می‌کنید رو اینجا به اشتراک بگذارید

ARON
ARON
@aron

تخصص: برنامه نویس

        $client = new \GuzzleHttp\Client();

        $r = $client->post('http://test.com:100/Api/Request/GetAgentGroup', [
            \GuzzleHttp\RequestOptions::JSON => ['ApiKey' => 'dfgdgdfgdfgdgderttertert']
        ]);

        return $r;
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

به شکل زیر هم امتحان کنید:

$client->request('POST', '/url', [
    'json'    => ['ApiKey' => 'foobar']
]);

در مستندات این ابزار هم لیست کاملی از نوع درخواست‌ها هست. لینک زیر:
http://docs.guzzlephp.org/en/stable/request-options.html#json

mahdi khanzadi
mahdi khanzadi
@khanzadimahdi

تخصص: Software engineer

سلام از پکیج زیر استفاده کنید

https://github.com/shetabit/extractor

دستورات به صورت زیر میشه:

// at the top
use Shetabit\Extractor\Classes\Request;

//...

// create new request
$request = new Request();

// set api's url and method
$request->setUri('http://yoursite.com/api/v1/endpoint')
        ->setMethod('get');

// run the request and get data
$response = $requet->fetch();

var_dump($response); // show given response

به همین راحتی :)
حالا اگه میخواید اطلاعاتی ارسال کنید به صورت زیر عمل کنید:

// at the top
use Shetabit\Extractor\Classes\Request;

//...

// create new request
$request = new Request();

// set api's url and method
$request->setUri('http://yoursite.com/api/v1/endpoint')
        ->addFormParam('email','testmail@gmail.com')
        ->addFormparam('password','123456789')
        ->setMethod('get');

// run the request and get data
$response = $requet->fetch();

var_dump($response); // show given response
ARON
ARON
@aron

تخصص: برنامه نویس

سعی کردم نصب کنم
با نسخه php من نمیخونه
Package shetabit/extractor at version has a PHP requirement incompatible with your PHP version (7.1.23)

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

در وبسایت خود GuzzleHttp مستنداتی برای روش ارسال وجود داره که میتونید استفاده بفرمایید.
برای تبدیل کردن یک آرایه به json هم میتونید از توابع json_decode استفاده بفرمایید

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام