为什么这个卷曲的帖子不起作用

时间:2014-01-21 07:22:30

标签: php html curl

我试图使用curl

将一些值发布到网址
//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);

我是新来的卷曲,这段代码,我从谷歌搜索。但它似乎没有工作。但我有一个工作代码

$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.I无论如何也不会得到任何变量。为什么第一个代码不起作用。我在做什么它以错误的方式?

3 个答案:

答案 0 :(得分:0)

这个答案是关于以下评论..

  

@ShankarDamodaran ..它正在工作,但有时会卡住。我   无法找出原因。有时候它运作良好

然后肯定是网址编码问题。

这样做..

$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 

答案 1 :(得分:0)

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

这只是一个想法。因为我之前也遇到过这样的问题。然后,我提到了SSL版本,它运行良好..

答案 2 :(得分:0)

您应该只有一种方式发送http数据POST或GET。第一种方法使用POST,而第二种方法使用GET。正如你所说,第一种方法不起作用,所以很明显你的请求必须只通过GET请求发送。

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

仅限检查标题使用

curl_setopt($ch, CURLOPT_HEADER, 1);

$headers = curl_getinfo($ch);