首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Goutte Post JSON或set cookie

Goutte Post JSON或set cookie
EN

Stack Overflow用户
提问于 2014-02-04 22:23:37
回答 2查看 5.9K关注 0票数 0

我正试着用Goutte提交一份表格。该表单使用jQuery将表单序列化为json,并将其发布到url。提交后,它将更新浏览器的cookie。

我要么需要:

  1. 在Goutte中手动设置曲奇,
  2. 或者通过Goutte发送json帖子,这样它的cookie jar就被更新了。

我尝试使用Goutte的addContent方法创建一个表单,然后发布它,但是它不是以JSON的形式发送的,只是一个常规的查询字符串。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-04 22:36:40

下面是一个类方法,它可以作为Goutte的JSON和URLencoding的示例。

代码语言:javascript
复制
use Goutte\Client;

class a 
{
   /**
   * abstract the request content-type behind one single method,
   * since Goutte does not natively support this
   * @param string $method HTTP method (GET/POST/PUT..)
   * @param string $url URL to load
   * @param string $parameters HTTP parameters (POST, etc) to be sent URLencoded 
   *                           or in JSON format.
   * @return \Symfony\Component\BrowserKit\Response
   */
  protected function makeRequest($method, $url, $parameters) {
      $client = new Client();
      if ($this->requestFormat == 'json') {
          return $client->request($method, $url, array(), array(), array('HTTP_CONTENT_TYPE' => 'application/json'), json_encode($parameters));
      } else {
          return $client->request($method, $url, $parameters);
      }
  }
}
票数 6
EN

Stack Overflow用户

发布于 2014-02-04 22:30:30

要在Goutte中设置cookie,请尝试如下:

代码语言:javascript
复制
$client->getCookieJar()->set($cookie);

我相信$cookie是Symfony\Component\BrowserKit\Cookie类型的,因此如果您检查文档,您应该能够以调用所需的形式发送cookie。

如果希望通过POST加载资源,请尝试如下:

代码语言:javascript
复制
$client->request('post', $url, $params);

我希望$params是提交给JSON操作的值的关联数组。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21564800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档