2010-09-09 28 views
0

我創建了一個使用CURL連接到pingomatic的PHP函數,但響應總是如此。使用cURL連接到pingomatic的PHP函數

Array ([EXE] => XML-RPC server accepts POST requests only.) 

這裏是我的示例代碼...

function curl_getpage2($url,$data, $referer = null, $agent = null, $header = null, $timeout = 20, $proxy = null, $proxy_username = null, $proxy_password = null) { 
//getProxy(); 
if ($agent == null) { 
    $agent = getAgent(); 
} 

if ($referer == null) { 
    $referer = getHost($url); 
} 
if (!is_array($header)) { 
    $header = array("Content-Type:text/xml","Host:".getHost($url),"User-Agent:$agent", 
    "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 
    "Accept-Language:en-us,en;q=0.5", 
    "Accept-Encoding:gzip,deflate", 
    "Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7", 
    "Keep-Alive:300", 
    "Connection:keep-alive", 
    "Cache-Control:max-age=0", 
    "Content-length: ".strlen($XML)); 
} 

if($proxy == null){ 
    $proxy = "208.100.27.155:60099"; 
} 

if($proxy_username == null && $proxy_password == null){ 
    $proxyUnPW = "unproxy:pwproxy"; 
}else{ 
    $proxyUnPW = $proxy_username.":".$proxy_password; 
} 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_HTTPHEADER,$header); 
curl_setopt($ch, CURLOPT_PROXY, $proxy); 
curl_setopt($ch, CURLOPT_PROXYUSERPWD,$proxyUnPW); 
     curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); 

     //curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
//curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
     //curl_setopt($ch, CURLOPT_REFERER, $referer); 
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
//curl_setopt($ch, CURLOPT_AUTOREFERER,TRUE); 
//curl_setopt($ch, CURLOPT_MAXREDIRS, 10); 
//curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt'); 
//curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt'); 
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);  
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 

     $result['EXE'] = curl_exec($ch); 
     //$result['INF'] = curl_getinfo($ch); 
     //$result['ERR'] = curl_error($ch); 

     curl_close($ch); 

     return $result; 
} 

我需要一些幫助在這裏。我剛剛對PHP有點新鮮。

+2

你的問題是什麼?你的示例代碼不能按你的要求工作? – 2010-09-09 08:00:45

+1

你也可以顯示用'$ data'和其他變量的內容來調用這個函數的代碼。 – shamittomar 2010-09-09 08:02:04

+0

它是''XML' meybe的'strlen($ XML)'''放''strlen($ data)''''''''。 Meybe你應該從頭文件中移除「Content-length」。 – jcubic 2010-09-09 12:03:36

回答

0

您可以通過網絡表單提交您的網站,然後調用該網址的GET請求(請參閱 問題How to ping automatically to pingomatic in PHP?)。

所以你的URL將類似於以下如果要ping(與urlencode()編碼的標題和URL)所有服務:

$url = 'http://pingomatic.com/ping/?title='.$title.'&blogurl='.$url.'&rssurl=&chk_weblogscom=on&chk_blogs=on&chk_feedburner=on&chk_newsgator=on&chk_myyahoo=on&chk_pubsubcom=on&chk_blogdigger=on&chk_weblogalot=on&chk_newsisfree=on&chk_topicexchange=on&chk_google=on&chk_tailrank=on&chk_skygrid=on&chk_collecta=on&chk_superfeedr=on'); 

如:

http://pingomatic.com/ping/?title=Example%20Title&blogurl=http%3A%2F%2Fwww.example.com%2F&rssurl=&chk_weblogscom=on&chk_blogs=on&chk_feedburner=on&chk_newsgator=on&chk_myyahoo=on&chk_pubsubcom=on&chk_blogdigger=on&chk_weblogalot=on&chk_newsisfree=on&chk_topicexchange=on&chk_google=on&chk_tailrank=on&chk_skygrid=on&chk_collecta=on&chk_superfeedr=on