我正在尝试使用php和curl向Web服务器发送请求。 我之前没有做过类似的事情,虽然网上有很多很好的例子,但我对理解一些curl命令有些困难。
这就是我想要做的:有一个已建立的Web服务(例如:Web地图服务),我希望我的php代码向此服务发送一个发布XML请求。作为回复,我想获得一个XML文件。
这就是我现在所拥有的:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '');
/*curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));*/
/* curl_setopt($ch, CURLOPT_HEADER, 0);*/
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
/*curl_setopt($ch, CURLOPT_REFERER, '');*/
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$ch_result = curl_exec($ch);
curl_close($ch);
echo $ch_result;
正如我所说,我在使用curl时也很新,而且我认为我缺少一些概念。 我的问题是: 1)我必须在:
中放入什么字符串(链接) curl_setopt($ch, CURLOPT_URL, '');
它是我要发送请求的服务的主机名吗?
2)在第6行中,变量$ xml包含我要作为请求发送的xml文件。它是正确的还是这个变量应该包含其他内容?
3)在哪些情况下我需要使用httpheader或header(row3和row4);
感谢您的帮助。 迪米瑞斯
答案 0 :(得分:31)
以这种方式尝试:
$url = 'https://android.googleapis.com/gcm/send';
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, "<xml>here</xml>" );
$result = curl_exec($ch);
curl_close($ch);
有关详细信息,请访问:http://php.net/manual/en/function.curl-setopt.php
答案 1 :(得分:-1)
我认为使用HTTP类可能更适合发出HTTP请求。
请参阅http://www.php.net/manual/intro.http.php。
此外,还有适用于PHP的特定WMS库,例如: http://docs.huihoo.com/geoserver/1.6.0/Parsing%20and%20using%20WMS%20capabilities%20with%20PHP.html。