如何使用 PHP curl 获取含有方括号查询的数据?

7 浏览
0 Comments

如何使用 PHP curl 获取含有方括号查询的数据?

我尝试使用PHP中的libcurl获取数据,并且我的查询中包含查询括号。当我使用Postman发送时,我得到了对象,但是使用curl时,我得到了400错误,表示这是一个错误的请求。但是当我使用?conditions[prs_id]=7&conditions[date]=2019-03-26时,我得到了答案和请求的对象。所以问题在于带有括号[2019-03-26 TO 2019-04-03]的值。我尝试过进行URL编码,将括号更改为URL代码,但没有起作用。如何在PHP中正确地使用libcurl发送这个请求?在Postman中可以正常工作。

0
0 Comments

在使用PHP的CURL库获取数据时,有时可能会遇到查询参数中包含方括号的情况。这可能会导致问题,因为方括号在URL中有特殊的含义,需要进行转义或处理。

解决这个问题的方法是使用PHP的http_build_query函数来构建URL中的查询参数。该函数可以将参数数组转换为经过正确编码的查询字符串。

下面是一个示例代码来说明如何使用http_build_query函数来解决这个问题:

$params = array(
    'name' => 'John',
    'age' => 30,
    'hobbies' => array('reading', 'writing', 'coding')
);
$queryString = http_build_query($params);
$url = 'http://example.com/api?' . $queryString;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
echo $response;

在上面的示例中,我们首先创建了一个包含参数的数组$params,其中包含了一个名为"hobbies"的参数,它的值是一个包含多个爱好的数组。然后,我们使用http_build_query函数将$params数组转换为查询字符串$queryString

接下来,我们将查询字符串添加到URL中,并使用CURL库进行数据获取。最后,我们将获取到的数据打印出来。

通过使用http_build_query函数,我们可以确保查询参数中的方括号被正确处理,使得我们能够成功获取到数据。

0
0 Comments

问题出现的原因是在使用PHP的curl库获取数据时,查询中包含方括号(square brackets),导致查询失败。解决方法是使用urlencode()函数对查询中的方括号进行编码。

具体的解决方法是将查询中的方括号部分进行编码,而不是对整个查询进行编码。编码后的方括号为"%5B2019-03-26+TO+2019-04-03%5D",这样就可以成功获取到数据了。

0