我是一个新手我试图让一个脚本在PHP中用Curl触发另一个脚本,但它似乎正在发送参数。
是否有附加参数的单独功能?
<?php
$time = time();
$message = "hello world";
$urlmessage = urlencode( $message );
$ch = curl_init("http://mysite.php?message=$urlmessage&time=$time");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
?>
有人能指出我正确的方向吗?
答案 0 :(得分:16)
您需要curl_setopt()以及CURLOPT_POSTFIELDS参数。 那将把给定的参数发布到目标页面。
curl_setopt($ch, CURLOPT_POSTFIELDS, 'foo=1&bar=2&baz=3');
PS:还要检查http_build_query(),这在发送许多变量时很方便。
答案 1 :(得分:5)
您需要将CURLOPT_POST
设置为true
和CURLOPT_POSTFIELDS
=&gt;参数
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
建议,将“CURLOPT_RETURNTRANSFER
”设置为true,将传输作为返回值curl_exec($ch)
的字符串返回,而不是直接输出
答案 2 :(得分:4)
可接受的答案对于POST很有用,但是如果OP专门想要GET怎么办?某些REST API指定http方法,而当您应该进行GET时,通常不适合使用POST。
以下是使用某些参数进行GET的代码片段:
$endpoint = 'http://example.com/endpoint';
$params = array('foo' => 'bar');
$url = $endpoint . '?' . http_build_query($params);
curl_setopt($ch, CURLOPT_URL, $url);
这将导致您的请求是通过GET
至http://example.com/endpoint?foo=bar
发送的。这是默认的http方法,除非您使用POST
将其设置为curl_setopt($ch, CURLOPT_POST, true)
之类的东西-因此,如果您特别需要GET,请不要这样做。
如果您需要使用其他http方法之一(例如,DELETE或PUT),请使用curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method)
。这同样适用于GET和POST。
答案 3 :(得分:0)
这是一个简单的解决方案。
$mobile_number = $_POST['mobile_number'];
$sessionid = $_POST['session_id'];
CURLOPT_URL => 'https://xxyz.jkl.com/v2.0/search?varible_that_you_want_to_pass='.$mobile_number.'&requestId=1616581154955&locale=en-US&sessionId='.$sessionid,