ちなみに当方が以下のようなコードを組むと「Invalid return payload: enable debugging to examine incoming payload (XML error at line 1, check URL)」というエラー($result->faultString()にこのような返り値が入ってしまう)が発生してしまいます。
<?php
include 'lib/xmlrpc.inc';
$server = new xmlrpc_client('/mt4/mt-xmlrpc.cgi',
'(サイトのドメイン)', 80);
$message = new xmlrpcmsg(
"metaWeblog.getPost",
array(
new xmlrpcval("(エントリのID)", 'string'),
new xmlrpcval("(ブログのID)", 'string'),
new xmlrpcval("(ブログのパスワード)", 'string')
)
);
$result = $server->send($message);
print_r($result);
if (!$result) {
print "<p>Could not connect to HTTP server.</p>";
} elseif ($result->faultCode()) {
print "<p>XML-RPC Fault #" . $result->faultCode() . ": " . $result->faultString()."</p>";
} else {
print_r($result->value());
}
?>
>XML error at line 1
とあるようにXMLファイルが返っていないように思います。
$server->setDebug(2); $result = $server->send($message);
として送信した内容と受け取った内容を表示して確かめてみてはどうでしょう。
プログラムの問題というよりもmt4の設定の問題ということはありませんか?
tobeoscontinue さん先ほどの質問に引き続きお答えいただきありがとうございます。
カテゴリ一覧の取得をsendするのは成功したので、MTAPIの問題はクリアしていると考えています。
もしかしたら受信するエントリの内容に xmlrpc.inc と相性の悪い物があるのかもしれません。
送信内容等は以下の通りです。
■送信内容
POST /mt4/mt-xmlrpc.cgi HTTP/1.0
User-Agent: XML-RPC for PHP 2.2.1
Host: www.gift-communication.net:80
Accept-Encoding: gzip, deflate
Accept-Charset: UTF-8,ISO-8859-1,US-ASCII
Content-Type: text/xml; charset=UTF-8
Content-Length: 297
<methodCall>
<methodName>metaWeblog.getPost</methodName>
<params>
<param>
<value><string>(エントリID)</string></value>
</param>
<param>
<value><string>(MTのID)</string></value>
</param>
<param>
<value><string>(ブログの正確にはMTAPIパスワード)</string></value>
</param>
</params>
</methodCall>
■受信内容
HTTP/1.1 200 OK
Date: Sat, 05 Jul 2008 03:16:41 GMT
Server: Apache/1.3.41 (Unix) PHP/4.4.8 mod_ssl/2.8.31 OpenSSL/0.9.7l
SOAPServer: SOAP::Lite/Perl/0.52
Content-Length: 4092
Connection: close
Content-Type: text/xml
<methodResponse><params><param><value><struct><member><name>permaLink</name><value><string>(ブログのURL)</string></value></member><member><name>mt_basename</name><value><string>post_2</string></value></member><member><name>userid</name><value><string>1</string></value></member><member><name>mt_allow_pings</name><value><int>1</int></value></member><member><name>mt_tags</name><value><string/></value></member><member><name>mt_excerpt</name><value><string>(エントリの内容)
</string></value></member><member><name>postid</name><value><string>(エントリーID)</string></value></member><member><name>mt_convert_breaks</name><value><string>0</string></value></member><member><name>title</name><value><string>(エントリのタイトル)</string></value></member><member><name>mt_keywords</name><value><string/></value></member><member><name>mt_text_more</name><value><string/></value></member></struct></value></param></params></methodResponse>
--
7月7日追伸:受信するデータに(")ダブルクォーテーションがあったので、除去したところ動作するようになりました。おつきあいいただきありがとうございました。