答案1
正如 Caleb 指出的那样,cURL 通常是命令行 HTTP 的首选武器。正如 Caleb 再次指出的那样,棘手的部分是将请求放在一起,特别是对于 XML-RPC,其中服务器可能会寻找格式良好的输入。
但如果你探究 Multipin 的源代码,您会看到它不仅仅是一个简单的 HTTP 请求(认为它确实会回退到该请求) - 它会根据目标服务启用的服务而变化 - 并且,在 weblogUpdates 的情况下 - 特殊情况发送的内容:
// Ping! Check service method
if (!empty($pingservice->method)) {
if ($pingservice->method == 'weblogUpdates.ping') {
$result = xmlrpc($pingservice->url, $pingservice->method, $name, $base_url);
}
else {
$result = xmlrpc($pingservice->url, $pingservice->method, $name, $base_url, $rss_url);
}
}
else {
$pingurl = strtr($pingservice->url, array(
'%name' => urlencode($name),
'%url' => urlencode($base_url .'/'),
'%rss' => urlencode($rss_url),
));
$result = drupal_http_request($pingurl);
上面的几行,根据分类法等决定发送什么 rss URL 是很聪明的。
所以我建议采用两种方法之一。
如果您只是想让某些事情继续进行,请
drupal_http_request
通过发送如下内容来模拟:$ curl <target-pingservice-url> -d 'name=<your site name>' -d url=<your-url> -d rss=/rss.xml
或者:如果想要 MultiPing 的所有行为,您可以提取该
_multiping_doping
函数并直接通过 PHP 从命令行运行它。您需要的主力函数是 Drupal 的 xmlrpc: http://api.drupal.org/api/drupal/includes%21common.inc/function/xmlrpc/7
祝你好运!