2011-03-22 46 views
1

我需要通过一个URL从供应商的服务器检索库存情况。我收到在浏览器中预期的响应时,只需输入以下网址到地址栏:了解cURL的问题

https://stage-elink2.unitedstationers.com/iLink2/InterlinkDirect.asp?RequestTransmission=OE01XXX   DL2003-02-0616:32:16000100363XXXXXX 001039XXXXXX9  AMFXXXXXX ACC11038  N&RequestType=3 

的“X就代表我的用户ID &密码信息。空格表示未来使用的字段。

我试图让上面的字符串使用cURL工作,但我不完全确定如何做到这一点。这是我迄今为止所拥有的。我没有得到任何答复,我不知道如何错误检查或逐步了解问题所在。

我的PHP代码卷曲:

$url = "https://stage-elink2.unitedstationers.com/iLink2/InterlinkDirect.asp"; 

$post_data = "RequestTransmission=OE01XXXX   DL2003-02- 0616:32:16000100363XXXXXX 001039XXXXXX9  AMFXXXXXX ACC11038  N&RequestType=3"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 
$result = curl_exec($ch); 
curl_close($ch); 
echo $result; 

任何帮助表示赞赏。谢谢。

+0

你的代码和你的地址栏的一个区别是浏览器请求你的URL和你的PHP代码方便POST。 – 2011-03-22 22:51:06

回答

2

尝试使用GET:

$url = "https://stage-elink2.unitedstationers.com/iLink2/InterlinkDirect.asp?RequestTransmission=OE01XXX DL2003-02-0616:32:16000100363XXXXXX 001039XXXXXX9 AMFXXXXXX ACC11038 N&RequestType=3"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$result = curl_exec($ch); 

curl_close($ch); 

echo $result; 
1

进一步研究后,我发现下面的解决方案工作。

This article on devzone真的帮助解释了如何使用cURL。

This article帮助我处理SSL错误(错误#60 - cURL错误:SSL证书问题,请验证CA证书是否正确)。

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_USERPWD, "userid:password"); //replace with usedid:password 
curl_setopt ($ch, CURLOPT_FAILONERROR, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 3); 
curl_setopt ($ch, CURLOPT_POST, 1); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $post_string); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 1); //solved SSL error message 
curl_setopt ($ch, CURLOPT_CAINFO, "cacert.pem"); //solved SSL error message 
$result = curl_exec($ch); 
curl_close($ch); 
echo $result;