• 締切済み

提供されたXML-RPC APIを利用してphpプログラムに実装したいですが

GetSenという文章サマリ抽出システム(http://www.ryo.com/2005/06/01/39/)提供しているXML-RPC APIを利用してphpプログラムに実装したいですが、なかなかうまく行かず、困っています。誰かが助けてください。 ちなみに、GetSenの作者様が公開しているservice URIは Server: www.ryo.com Port: 80 Path: /getsen/rpc.php ryocomJapanese.getsen GetSenを使用して、日本語の文章からサマリ(要約)を取り出します 引数 String copus // サマリ抽出の対象とする日本語の文章 返り値 String summarySentence // 抽出されたサマリ(要約文) プログラミングしたものは以下のように: ------------------------------------------------------------- <html> <head> <title>sum Client Demo</title> </head> <body> <h1>summary Client Demo</h1> <?php require_once("XML/RPC.php"); $GLOBALS['XML_RPC_defencoding'] = "UTF-8"; $xmlrpc_host = "www.ryo.com"; //host名 $xmlrpc_path = "/getsen";//パス $c = new XML_RPC_client( $xmlrpc_path, $xmlrpc_host, 80 ); //メッセージ作成 $message = new XML_RPC_Value( '集合研修は研修コースの中で最も一般的で、総合的な研修方法です。お客様からの業務要件に沿った実践的な内容をご提供し、Oracle認定試験の学習にもなります。また、集合研修では教室でのデモンストレーションや演習問題にて、実機を利用した環境をご提供いたします。','string'); //テスト用要約する文書 $copus = new XML_RPC_Message('ryocomJapanese.getsen',$message); //メッセージ送信 $response = $c->send($copus); print_r($response); ?> </body> </html> ------------------------------------------------------------------------- 教えて下されば幸いです。

みんなの回答

  • smcss
  • ベストアンサー率63% (7/11)
回答No.1

とりあえず、パス設定が違ってませんかね。 $xmlrpc_path = "/getsen";//パス http://www.ryo.com/2005/06/03/45/ Path : /getsen/rpc.php となってますが。

makeni
質問者

お礼

ご指摘ありがとうございます。うまく接続できましたが、文字コードのせいかもしれません、出力結果まだうまく出しておりません。ソースコードを添付させていただきますので、どんなたがご指導をしてくれば幸いです。

makeni
質問者

補足

前回の原因はXML_RPC_Message()の第二引数をarrayにする必要でした。うまく接続できましたが、文字コードのセイで出力結果がおかしいです。実行結果のソースコードは以下のようになります。どうしたらいいですか? =========================================== 実行結果のソースコード: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>sum Client Demo</title> </head> <body> <h1>summary Client Demo</h1> XML_RPC_Message Object ( [convert_payload_encoding] => [debug] => 0 [send_encoding] => [methodname] => ryocomJapanese.getsen [params] => Array ( [0] => XML_RPC_Value Object ( [me] => Array ( [string] => 2008年ほど前半と後半で経済状況が大きく転換した年は珍しい。うなぎ上りかと思われていたガソリン価格も8月の1リットル185円(全国平均)をピークに下がり続け、直近(2009年1月時点)では熊本でも103円台に低下しています。一部例外を除いて多くの国際商品価格も同様な推移をたどっています。インフレからデフレへ、ジェットコースターに乗っているようです。多くのエコノミスト、メディアは180度変化した今日の惨状を見通せませんでした。 転換点の象徴は昨年9月15日のリーマン・ブラザーズの破綻でしょう。サブプライムローン問題が顕在化した2007年8月9日の「パリバ・ショック」から1年の間に、米国の金融危機は世界の金融危機に広がり、さらにその流れは実体経済までも飲み込み、今や「100年に1度」とも「これまでにない」という意味で「世界恐慌2.0」とも表現されています。世界的に需要は落ち込み、景気に敏感な統計の一つ新車販売台数は3割も落ち込み、米ビッグ3だけでなく、日本の自動車産業も苦境に陥りました。熊本にも大手自動車や電機の関連会社が多数あります。熊本の有効求人倍率は2008年11月には0.51倍まで低下しました(2009年の2月では0.41に低下,全国で41番目.全国平均は0.59)。不況と恐慌の違いを例えて次のように言われることがよくあります。「隣人が失業するのが不況、自らが失業するのが恐慌。」政府の財政政策の有効性が問われるときです。 ) [mytype] => 1 ) ) [payload] => [remove_extra_lines] => 1 [response_payload] => ) XML_RPC_Response Object ( [xv] => XML_RPC_Value Object ( [me] => Array ( [struct] => Array ( [flerror] => XML_RPC_Value Object ( [me] => Array ( [boolean] => 0 ) [mytype] => 1 ) [summarySentence] => XML_RPC_Value Object ( [me] => Array ( [string] => ) [mytype] => 1 ) ) ) [mytype] => 3 ) [fn] => [fs] => [hdrs] => Array ( [0] => T ) ) </body> </html> ----------------------------------------------------------- 。php初心者ですので、ご指導をいただければ幸いだと存じます。 よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • XML-RPCでsend()できない

    PearライブラリにあるXML-RPCを使おうとすると 以下のようなエラーがでます。 Fault Code: 5 Fault Reason: Didn't receive 200 OK from remote server. (HTTP/1.1 404 Not Found ☆プログラム //クライアントの作成 $xmlrpc_host = "localhost"; //host名 $xmlrpc_path = "/~test/xml_rpc/server.php";//パス $c = new XML_RPC_client( $xmlrpc_path, $xmlrpc_host, 80 ); //メッセージ作成 $params = array(new XML_RPC_Value( 5, 'int' ) ,new XML_RPC_Value( 3, 'int' )); $message = new XML_RPC_Message('sample.sum',$params); //メッセージ送信 $response = $c->send($message); // Process the response. if (!$response->faultCode()) { $v = $response->value(); print "Value: ". $v->scalarval() ."<br>"; print "The XML received:<blockquote>" . $response->serialize(); print "</blockquote>"; }else{ print "Fault Code: " . $response->faultCode() . "<br>"; print "Fault Reason: " . $response->faultString() . "<br>"; } send()ができないみたいです(>_<) PHP5を使っているんですが、 PHP5では標準であるxml-rpcを使っても、 だめです。 php_iniファイルで always_populate_raw_post_data = On と行を付け足したんですけどね‥ XML_RPCを使えるようにするには、 ほかにも必要な環境設定はあるでしょうか? 誰かご存知でしたら教えてください。 お願いしますm(_ _)m プログラムは下の PHPを用いたXML-RPCの基礎 というサイトを参考。 http//mikilab.doshisha.ac.jp/dia/research/report/2005/0813/007/report20050813007.html server.phpとclient.phpというファイルを、 適当なところに配置して実行しました。

    • ベストアンサー
    • PHP
  • XML-RPCについて

    どうも、Java初心者です。 XML-RPCで公開されたAPIをJavaでつつこうと思っています。 具体的にはWacca API(XML RPCでやり取り)を使ってなにか作ろうと思っています。 ■コチラのAPI http://wacca.tv/help/api/songsearch XmlRpc2.0(http://ws.apache.org/xmlrpc/index.html) を利用していますが、XMLRPCへの引数はどのように設定すればいいのでしょうか? 下記のコードでは、デフォルトの100件が表示されるだけです。なにもパラメータが有効になっていないということですよね。 参考サイト、参考プログラムがあれば教えてください! XmlRpcClient client = new XmlRpcClient("http://a.wacca.tv/api/xmlrpc"); Vector parameterList = new Vector(); parameterList.add("love");//キーワードlove Vector result = (Vector)client.execute("song.Search", parameterList); Iterator i = result.iterator(); while (i.hasNext()) { Hashtable hash = (Hashtable) i.next(); System.out.println((Integer) hash.get("song_id") + ":" + (String) hash.get("artist_name") + ":" + (String) hash.get("mp3_url")); } JDK1.5です。 よろしくおねがいします。

  • googlemapAPIとXML-RPC

    お世話になります。 「Googleマップ+Ajaxで自分の地図をつくる本」という書籍を読んで勉強しております。 書籍のサンプルコードを実際に動作させてみたところ、動きません。 googlemapオブジェクトのPOSTが正常に動作していないか、もしくはXML-RPCが正常に 動作していないかだと思うのですが解決できません。 お分かりになる方いらっしゃいましたら、ご教授ください。 ■サンプルコードの一部を転記します。 ■javascript function xmlRpc( server, method, params, callbackfunc ) { var xml_param = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; xml_param += "<methodCall>"; xml_param += "<methodName>" + method + "</methodName>"; xml_param += "<params>"; for( var i=0; i < params.length ; i++ ) { xml_param += "<param>"; xml_param += "<value>" + params[i] + "</value>"; xml_param += "</param>"; } xml_param += "</params>"; xml_param += "</methodCall>"; var req = GXmlHttp.create(); req.open("POST", server , true ); req.onreadystatechange = function() { if(req.readyState == 4 ) { if( callbackfunc != null ) callbackfunc(req.requestXML); } } ★ req.setRequestHeader("Content-Type", "text/xml; charset=UTF-8"); req.send(xml_param); ■PHP $request = $HTTP_RAW_POST_DATA; $server = xmlrpc_server_create(); xmlrpc_server_register_method( $server, "addLocation", "addLocation" ); xmlrpc_server_register_method( $server, "deleteLocation", "deleteLocation" ); xmlrpc_server_register_method( $server, "editPlace", "editPlace" ); xmlrpc_server_register_method( $server, "deletePlace", "deletePlace" ); ■補足 javascriptからXML-RPC(PHPに記述)のメソッドを指定し、各種メソッドではDB処理が行われています。 javascript中の★のところまで通っていることをalert()で確認しましたが、PHPは一切通っていない ようです。 ■以下2つの環境で動作確認しております。 (1)自宅マシン ・OS windows XP SP2 ・XAMPP Ver1.7.0インストール ・PEARのXML-RPCはインストール済み (2)レンタルサーバ ・さくらのレンタルサーバ スタンダード ・phpinfo()にてPEARのXML-RPCインストールを確認済み

  • phpからxmlへの文字化け

    PHPについての質問です。PHPのバージョンは5です。 FLASH8で作ったスクリプトからPHPに変数を送り、その変数をPHPからXMLに送っています。 しかしPHPからXMLに送ると日本語がちゃんと表示されません。何かPHPの方でしないとまずいのですか? <FLASH> System.useCodepage = true; SendData = new LoadVars(); //送りたいデータを箱に詰める this.btn_mc.onRelease = function() { _root.SendData.pro1 = nam; _root.SendData.pro2 = sbj; _root.SendData.pro3 = mail; _root.SendData.pro4 = product; //データ(中身)を詰めた箱をgetFlash.phpに送信 _root.SendData.sendAndLoad("http://localhost/php/xml_php/xml12.php", _root.SendData); }; <PHP> <?php /*変数を入れる*/ $name = $_POST["pro1"]; $sbj = $_POST["pro2"]; $add = $_POST["pro3"]; $msg = $_POST["pro4"]; /*時間を取得する*/ $stamp = time(); $date = date('Y,m/d(D)', $stamp); /*xmlに追加*/ $xml_path = "test1.xml"; $xml = file_get_contents( $xml_path ); $replace_key = "<article>"; $add_xml = $replace_key."\n<entry name='$name' dat='$date' tit='$sbj' contents='$msg'/>\n"; $result = str_replace($replace_key,$add_xml,$xml); file_put_contents( $xml_path , $result ); ?> <xml> <?xml version="1.0" encoding="utf-8"?> <article> <entry name="ha" dat="2008,03/10(Mon)" tit="test" contents="hogehoge"/> </article> となっています。

    • 締切済み
    • PHP
  • flashでPHPファイル(実際は該当するxmlを呼ぶ)を読み込む方法について

    FLASH(AS2.0)でPHPファイル(実際は該当するxmlを呼ぶ)を読み込むようにするにはどのようにしたらいいのですか? 現状では、ローカルのxmlファイルを読み込むように、 下記のように書いてあります。 var objXML:XML = new XML(); objXML.ignoreWhite = true; objXML.onLoad = function(success:Boolean):Void { if(success) { loadXML(this); } } var menuArray:Array = new Array(); // function loadXML(objXML:XML):Void { var dataNode:XMLNode = objXML.firstChild; var menuNodes:Array = dataNode.childNodes; for(var i:Number = 1; i <= menuNodes.length; i++) { var menuNode:XMLNode = menuNodes[i-1].childNodes; var Name:String = menuNode[0].firstChild.nodeValue; menuArray[i] = { title:Name}; } myVars(menuArray); } objXML.load("sample.xml"); この状態から、外部<http://aaaa/sample.php>URLに アクセスして、PHPファイルを読み込むにはどのようにしたら よいのか全くわかりません。 objXML.load("sample.xml"); 上記の()の中に直接URLを挿入すると、 ローカルでは確認できるのですが、 ファイルをアップすると、まったく読み込めてはいません。 ActionScriptは全くわからないので、ご教授よろしくお願いいたします。

  • PHPでXMLデータ生成、スキーマで失敗

    PHPのDOMDocumentを使ってXMLデータを生成しています。 $dom->schemaValidate('xsdファイル'); で失敗してしまします。 どうしても原因がわからないので吐き出すデータを最小限にして試してみましたが状況が変わりませんでした。 スキーマは以下のようになっています。 <?xml version="1.0" encoding="Shift_JIS" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="Response"> <xsd:complexType> <xsd:sequence> <xsd:element name="user" type="user_type" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="user_type"> <xsd:sequence> <xsd:element name="developerID" type="xsd:string" /> <xsd:element name="operation" type="xsd:string" /> <xsd:element name="User-Agent" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:schema> そして吐き出されるxml形式のデータは、 <?xml version="1.0" encoding="Shift-JIS"?> <Response> <user> <developerID>testdeveloperID</developerID> <operation>testoperation</operation> <User-Agent>Mozilla/5.0 (Windows NT 6.0; rv:7.0.1) Gecko/20100101 Firefox/7.0.1</User-Agent> </user> </Response> 出てしまうエラーは、 Warning: DOMDocument::schemaValidate() [<a href='domdocument.schemavalidate'>domdocument.schemavalidate</a>]: The document has no document element. in "実行しているphpファイルのパス" on line 12 ちなみに実行phpの12行目には、 $dom->schemaValidate('xsdファイル'); があります。 スキーマを使用してのxmlデータ吐き出しは初めてなのでいろいろと戸惑っています。 何か解決方法もしくはエラーが出てしまう原因をご存知の方がいらっしゃいましたらアドバイスをいただけないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • XML
  • PHPでXMLデータ生成、スキーマで失敗

    PHPのDOMDocumentを使ってXMLデータを生成しています。 $dom->schemaValidate('xsdファイル'); で失敗してしまします。 どうしても原因がわからないので吐き出すデータを最小限にして試してみましたが状況が変わりませんでした。 スキーマは以下のようになっています。 <?xml version="1.0" encoding="Shift_JIS" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="Response"> <xsd:complexType> <xsd:sequence> <xsd:element name="user" type="user_type" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="user_type"> <xsd:sequence> <xsd:element name="developerID" type="xsd:string" /> <xsd:element name="operation" type="xsd:string" /> <xsd:element name="User-Agent" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:schema> そして吐き出されるxml形式のデータは、 <?xml version="1.0" encoding="Shift-JIS"?> <Response> <user> <developerID>testdeveloperID</developerID> <operation>testoperation</operation> <User-Agent>Mozilla/5.0 (Windows NT 6.0; rv:7.0.1) Gecko/20100101 Firefox/7.0.1</User-Agent> </user> </Response> 出てしまうエラーは、 Warning: DOMDocument::schemaValidate() [<a href='domdocument.schemavalidate'>domdocument.schemavalidate</a>]: The document has no document element. in "実行しているphpファイルのパス" on line 12 ちなみに実行phpの12行目には、 $dom->schemaValidate('xsdファイル'); があります。 スキーマを使用してのxmlデータ吐き出しは初めてなのでいろいろと戸惑っています。 何か解決方法もしくはエラーが出てしまう原因をご存知の方がいらっしゃいましたらアドバイスをいただけないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • XML-RPCで公開APIを利用したい

    こんにちは。 PHP でのXML-RPCの使い方が分かりません。 例えば「はてなブックマーク件数取得API」http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%d6%a5%c3%a5%af%a5%de%a1%bc%a5%af%b7%ef%bf%f4%bc%e8%c6%c0API のようなAPIを利用したいのですが、この際のXML-RPCで情報を送信するという方法がわかりません。 なるべく具体的な方法で、よろしくお願いします。

    • 締切済み
    • PHP
  • wordpressでのcron投稿について

    wordpressに対してcronを使い、自動投稿させたいと思います。 使っているライブラリはzendframework xmlrpcです。 wordpressのトップディレクトリ内にzendディレクトリ及びcronを実行するphpファイルを置いているのですが、エラーが返されてしまいます。直接手動でそのファイルにアクセスするとしっかりと実行されます。 --------------------------------------------------------------------------------- PHP Warning: require_once(Zend/Http/Client.php): failed to open stream: No such file or directory in /var/www/html/Zend/XmlRpc/Client.php on line 28 Warning: require_once(Zend/Http/Client.php): failed to open stream: No such file or directory in /var/www/html/Zend/XmlRpc/Client.php on line 28 PHP Fatal error: require_once(): Failed opening required 'Zend/Http/Client.php' (include_path='.:/usr/share/pear:/usr/share/Zend') in /var/www/html/Zend/XmlRpc/Client.php on line 28 Fatal error: require_once(): Failed opening required 'Zend/Http/Client.php' (include_path='.:/usr/share/pear:/usr/share/Zend') in /var/www/html/Zend/XmlRpc/Client.php on line 28 --------------------------------------------------------------------------------- 上記を見る限りではZend/Http/Client.phpのファイルが読み込めてない状態になってることがわかりました。 何故手動でアクセスすると投稿されるのに、cron実行の場合は外部のファイルを読み込めず実行されないのかどなたかご教授頂きたいと思います。尚、検索した結果以前にも似たような質問があり、下記URLの方法を読んでみたのですが理解できませんでした… http://okwave.jp/qa/q7141530.html

    • ベストアンサー
    • PHP
  • pearライブラリのインクルードについて

    PEARへのパスの通し方の方法を教えていただきたいと思います。 私はハッスルサーバーを使っており、以前に以下のサイトを参考にしてPEARをインストールしました。(PHPのバージョンは5.2です。) http://funweb.sblog.jp/blog/article/%E3%83%8F%E3%83%83%E3%82%B9%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%B8%E3%81%AEPEAR%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB その後、XML-RPCを使用したPHPプログラムを作成し、 以下の場所に配置しました。 <ドキュメントルート配下> ・pear(フォルダ)   ・bin(フォルダ)   ・PEAR(フォルダ)   ・pear.conf   ・phpプログラム ←配置したプログラム ・wp(フォルダ) phpプログラムにはrequire_once("XML/RPC.php"); と記述しているのですが実行すると以下のエラーが出ます Warning: require_once(XML/RPC.php) [function.require-once]: failed to open stream: No such file or directory in /home/xxx/public/www/pear/xxx.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'XML/RPC.php' (include_path='“.:/home/xxx/public/www/pear/PEAR”') in /home/xxx/public/www/pear/xxx.php on line 2 php.iniのインクルードパスには「 include_path = ".;/home/xxx/public/www/pear/PEAR";」と記述しています。 問題はパスの記述か、XMLフォルダの存在の有無かのどちらかだろうと判断し、 XMLフォルダの存在を確認するためにphpプログラムの方を以下のように フルパスで記述しました。 require_once("/home/xxx/public/www/pear/PEAR/XML/RPC.php"); すると今度は以下のエラーが出ました。 Warning: include_once(PEAR.php) [function.include-once]: failed to open stream: No such file or directory in /home/xxx/public/www/pear/PEAR/XML/RPC.php on line 594 Warning: include_once() [function.include]: Failed opening 'PEAR.php' for inclusion (include_path='.;/home/xxx/public/www/pear/PEAR') in /home/xxx/public/www/pear/PEAR/XML/RPC.php on line 594 Fatal error: Class 'PEAR' not found in /home/xxx/public/www/pear/PEAR/XML/RPC.php on line 596 これでXMLフォルダが存在することは分かったのであとはインクルードパスの問題と判断しました。 しかし、インクルードパスは何度確認しても「/home/xxx/public/www/pear/PEAR」と合っているように思います。 他に心当たりがある方がいらっしゃいましたら教えていただければと思います。 宜しくお願い致します。

    • 締切済み
    • PHP