我在下面有这个卷曲请求,已在另一篇文章中成功解决了问题。现在,我的PHP似乎通过这段代码没有任何错误,移动到IF语句的下一部分并发送确认电子邮件。它只是不会从Web服务更新数据库。如果这不起作用,我将不得不通过电子邮件发送给Web服务的创建者,但我只想确保在执行此操作之前代码是相当可靠的。有人有主意吗?这是代码:
$url = 'http://127.0.0.1:85/AccountCreator.ashx';
$curl_post_data = array(
'companyName' =>urlencode($companyName),
'mainContact' =>urlencode($mainContact),
'telephone1' =>urlencode($telephone1),
'email' => urlencode($email),
'contact2' => urlencode($contact2),
'telephone2' => urlencode($telephone2),
'email2' => urlencode($email2),
'package' => urlencode($package)
);
foreach($curl_post_data as $key=>$value) {$fields_string .=$key. '=' .$value.'&';
}
rtrim($fields_string, '&');
//die("Test: ".$fields_string);
$ch = curl_init();
curl_setopt ($ch, CURLOPT, $url);
curl_setopt ($ch, CURLOPT_POST, count($curl_post_data));
curl_setopt ($ch, CURLOPT_POSTFIELDS, $fields_string);
$result = curl_exec($ch);
curl_close($ch);
答案 0 :(得分:1)
CURLOPT_POSTFIELDS选项接受POST数据的关联数组。可能更好地使用那个而不是自己构建查询字符串,以便在爆炸时让别人负责。
PHP手册:
要在HTTP“POST”中发布的完整数据 操作。要发布文件,请预先添加 带@的文件名并使用完整路径。 这可以作为一个传递 urlencoded字符串就像 'para1 = val1& para2 = val2& ...'或作为 数组,字段名称为键和 字段数据作为值。如果价值是 数组,Content-Type标题将是 设置为multipart / form-data。
答案 1 :(得分:1)
首先,问题是什么?如果您确切地解释了代码中的失败,那么对它进行故障排除会更容易。其次,你在这段代码中做了几件奇怪的事情:
我不明白你为什么这么做
curl_setopt ($ch, CURLOPT_POST, count($curl_post_data));
CURLOPT_POST需要布尔值(true / false)。您应该将其设置为true
。
其次,您不需要手动编码CURLOPT_POSTFIELDS
。创建一个数组并让cURL在内部处理它:
$curl_post_data = array(
'companyName' =>$companyName,
'mainContact' =>$mainContact,
'telephone1' =>$telephone),
'email' => $email,
'contact2' => $contact2,
'telephone2' => $telephone2,
'email2' => $email2,
'package' => $package
);
这些可能无法解决问题,但可能有所帮助。