ARON
5 سال پیش توسط ARON مطرح شد
14 پاسخ

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

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


ثبت پرسش جدید
ARON
تخصص : برنامه نویس
@aron 5 سال پیش مطرح شد
1

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

        $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 5 سال پیش مطرح شد
1

درود
به شسکل زیر می‌تونید یه درخواست پست بهمراه اطلاعات بدنه (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 5 سال پیش مطرح شد
0

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


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

به شکل زیر:

$client = new \GuzzleHttp\Client();

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

ARON
تخصص : برنامه نویس
@aron 5 سال پیش مطرح شد
0

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

import هم نمیشه


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

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

App\Http\Controllers\dashboard\GuzzleHttp\RequestOptions

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

\GuzzleHttp\Client()

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


ARON
تخصص : برنامه نویس
@aron 5 سال پیش مطرح شد
0

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


ARON
تخصص : برنامه نویس
@aron 5 سال پیش مطرح شد
0

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


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

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


ARON
تخصص : برنامه نویس
@aron 5 سال پیش مطرح شد
0
        $client = new \GuzzleHttp\Client();

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

        return $r;

علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

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

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

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


mahdi khanzadi
تخصص : Software engineer
@khanzadimahdi 5 سال پیش مطرح شد
1

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

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 5 سال پیش مطرح شد
0

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


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
1

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


ARON
تخصص : برنامه نویس
@aron 5 سال پیش مطرح شد
1

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

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

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

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