首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么当我发布一些值时,curl不能工作?

为什么当我发布一些值时,curl不能工作?
EN

Stack Overflow用户
提问于 2014-01-21 15:22:30
回答 3查看 1.1K关注 0票数 0

我正在尝试使用curl将一些值发布到URL

代码语言:javascript
运行
复制
//set up a connection variable for the page you will post data to
$curl_connection = curl_init('https://payment.teqwerty.com/NetBanking/Pay.jsp?');
 
//curl basic setup
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
 
//$_POST variables to pass
$post_items[] = 'MerchantId='.strip_tags($merchantId);
$post_items[] = 'Password='.strip_tags($Password);
$post_items[] = 'RemoteIP='.strip_tags($RemoteIP);
$post_items[] = 'Amount='.strip_tags($Amount);
$post_items[] = 'BankId='.strip_tags($BankId);
$post_items[] = 'Checksum='.strip_tags($checksum);
$post_items[] = 'Name='.strip_tags($Name);
$post_items[] = 'mobileNo='.strip_tags($mobileNo);
$post_items[] = 'Email='.strip_tags($Email);

 
//format the $post_items into a string
$post_string = implode ('&', $post_items);
 
//send the $_POST data to the new page
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
$result = curl_exec($curl_connection);
curl_close($curl_connection);

我是第一次接触curl,这段代码是我从谷歌上搜索到的。但它似乎不起作用。但是我有一个可以工作的代码

代码语言:javascript
运行
复制
$parameters='MerchantId='.$merchantId.'&Password='.$Password.'&ReferenceNo='.$ReferenceNo.'&RemoteIP='.$RemoteIP.'&Amount='.$Amount.'&BankId='.$BankId.'&Checksum='.$checksum.'&Name='.$Name.'&MobileNo='.$MobileNo.'&Email='.$Email;
    //echo "para is <br>".$parameters;
    //set POST variables
    $url = 'https://payment.teqwerty.com/NetBanking/Pay.jsp?'.$parameters; 
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    $auth = curl_exec($curl);

上面的方法运行良好。但奇怪的是,有时这会卡住而不起作用。我想将参数发布到该URL。无论如何,我不会得到任何变量作为回报。为什么第一个代码不能工作。我做错了吗?

EN

回答 3

Stack Overflow用户

发布于 2014-01-21 15:42:14

这个答案是关于下面的评论的。

邮箱:

@ShankarDamodaran damodaran.它在工作,但有时会卡住。我找不出that.Sometimes的原因它工作得很好

那么肯定是url编码的问题。

像这样做..

代码语言:javascript
运行
复制
$parameters='MerchantId='.$merchantId.'&Password='.$Password.'&ReferenceNo='.$ReferenceNo.'&RemoteIP='.$RemoteIP.'&Amount='.$Amount.'&BankId='.$BankId.'&Checksum='.$checksum.'&Name='.$Name.'&MobileNo='.$MobileNo.'&Email='.$Email
$parameters = urlencode($parameters); //<--- URL Encode it before sending to the cURL 
票数 0
EN

Stack Overflow用户

发布于 2014-01-21 15:49:13

因为,您可以防止将SSL验证设置为false。curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);然后,我猜您还必须提到SSL版本,即curl_setopt($init_curl,CURLOPT_SSLVERSION,3);

这只是一个想法。因为我之前也遇到过这样的问题。然后,我提到了SSL版本,它工作得很好。

票数 0
EN

Stack Overflow用户

发布于 2014-01-21 15:55:08

您应该只有一种发送http数据POST或GET的方法。第一种方法使用POST,而第二种方法使用GET。正如您所说,第一种方法不起作用,因此很明显,您的请求只能作为GET请求发送。

对于有时无法工作的问题,您必须检查响应头/数据以获取更多信息。

对于仅检查标题,请使用

代码语言:javascript
运行
复制
curl_setopt($ch, CURLOPT_HEADER, 1);

$headers = curl_getinfo($ch);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21251702

复制
相关文章

相似问题

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