jjzjj

php - 如何使用 Guzzle 模拟特定 URL 的响应?

Guzzle6文档提供了一种简单的方法来模拟HTTP调用,以便每个请求返回一个特定的响应:http://docs.guzzlephp.org/en/latest/testing.html#mock-handler但是,正如文档中所述,MockHandler定义了一个响应队列,无论URL是什么,每个请求都会以相同的顺序发送。如何告诉Guzzle在每次调用时为给定的URL发送特定的响应?例如,我想要这个电话:$client->request('GET','/products')->getBody();不是发出实际请求而是总是返回:{'products'=>[{id:1,name:'Prod

php - 在 Laravel 中将 cURL 请求转换为 Guzzle

我在Codeigniter中有一个如下所示的curl请求:$order=['index'=>'Value','index2'=>'Value2'];$this->curl->create($this->base_url.'order/');$this->curl->http_login($creds['username'],$creds['password']);$this->curl->ssl(TRUE,2,'certificates/certificate.pem');$this->curl->option(CURLOPT_HTTPHEADER,array('Content-Typ

php - Guzzle HTTP客户端多线程下载文件 : EachPromises vs Pool objects

出于测试目的,我有一个包含2000个图像URI(字符串)的数组,我使用此函数异步下载。经过一些谷歌搜索、测试和尝试后,我想出了2个它们都可以工作的函数(老实说downloadFilesAsync2抛出一个InvalidArgumentException在最后一行)。downloadFilesAsync2函数基于GuzzleHttp\Promise\EachPromise类,downloadFilesAsync1基于GuzzleHttp\Pool类。这两个函数都很好地异步下载了2000个文件,同时限制了10个线程。我知道它们有效,但除此之外别无其他。我想知道是否有人可以解释这两种方法,一

php - Guzzle 中包含文件和字段的 POST 请求

好的,我先介绍一下背景知识。我有一个用CakePHP编写的系统A,可以处理广告和产品等。最近我一直在研究另一个用Laravel编写的系统,它作为一个自助服务工具,供房地产经纪人发布和管理他们驻留在系统A中的房地产列表。我现在正准备从自助上传图片为系统A提供站点服务。我在Cake中编写了一个简单的Controller操作来处理POST请求并将图像文件保存在服务器上。http://example.com/image/add我能够使用REST应用程序发送POST请求、上传图像并获得正确的响应,例如postman.在系统A(蛋糕)方面,一切看起来都不错。现在在自助服务系统中,在Laravel中

php - Guzzle 异步请求不起作用

我正在使用Guzzle我是通过composer安装的,但没有做一些相对简单的事情。我可能误解了documentation但基本上我想要做的是向服务器运行POST请求并继续执行代码而不等待响应。这是我所拥有的:$client=new\GuzzleHttp\Client(/*baseUrl,andauthcredentialshere*/);$client->post('runtime/process-instances',['future'=>true,'json'=>$data//isanarray]);die("I'mdonewiththecall");现在假设runtime/pro

php - 使用 PHP Guzzle HTTP 6 发送带有已编码数据的 JSON

我正在尝试发送一个POST请求,其中包含带有以下header的原始JSON字符串:Content-Type:application/json。通过查看文档,我可以看到我可以做这样的事情......$data=['x'=>1,'y'=>2,'z'=>3];$client=new\GuzzleHttp\Client($guzzleConfig);$options=['json'=>$data,];$client->post('http://example.com',$options);我的问题是,当我到达这一点时,$data已经被json_encode了。我已经尝试了以下但它不起作用。$d

php - 使用 Guzzle 将 csv 数据作为分块请求发送

我想将CSV数据上传到RESTAPI(仅在特定时间点除外CSV数据)。CSV数据的来源是用户上传的。上传格式可以是CVS、ODS或XLSX电子表格数据。当用户上传CSV文件时-我只是这样做(简化):$handle=\fopen($tempFile,'r');$client->post('/import',['body'=>$handle]);这很有效,而且很容易做到。但是,例如,当用户上传XLSX时,我目前循环遍历第一张工作表中的行并使用fputcsv创建资源。useBox\Spout\Reader\ReaderFactory;$reader=ReaderFactory::create

php - 如何在 Guzzle 中捕获 cURL 使用的 IP?

我正在使用Goutte(内部使用Guzzle)进行网络抓取项目。我正在开发自定义速率限制器,因此我将所有HTTP操作存储到针对IP的数据库表中,这样我就可以检查是否在最近的时间范围内对主机进行了调用。目前我正在使用gethostbyname将已知主机名转换为IP地址,但Guzzle已经进行了查找,因此这可能会造成浪费。此外,主机名可能会解析为多个IP地址(因此需要gethostbynamel),因此我自己派生的IP实际上可能不是Guzzle使用的IP地址(尽管我猜测,那里可能是PHP级别的一些缓存,这可能使gethostbyname返回正确的结果)。我已经为Guzzle订阅了一个插件,

php - Amazon S3 - deleteObjects() - "guzzle"错误?

这是我正在使用的精简但准确的代码。$client=S3Client::factory(array('key'=>$ak,'secret'=>$sk));foreach(range(1,10)as$i)$temp[]=array('Key'=>$i);$result=$client->deleteObjects(array('Bucket'=>'bucket','Objects'=>$temp));return$result;一切正常,它按要求删除对象,但它从phar文件中抛出所有这些错误。如下所示在本地运行。fatalerror:未捕获异常“Guzzle\Http\Exception\

PHP Guzzle 客户端错误响应/错误请求 400 Google OAuth2 token

Guzzle请求try{$url='https://www.googleapis.com/oauth2/v1/tokeninfo?';$client=newClient();$request=$client->createRequest('GET',$url);$query=$request->getQuery();$query['access_token']=$access_token;$response=$client->send($request);$json=$response->json();if(!empty($json)&&!isset($json['error'])){