0

CodeIgniter Framework で API を開発しています。

シナリオ-

  1. 私のアプリケーションはhttp://myapi.com/controler?parA=valA&parB=valBで API を呼び出します
  2. 私のコントローラーはリクエストを _GET して処理します。
  3. コントローラーは でビューを呼び出します$this->load->view('response',$data, true)

マイ ビュー ファイル-

Response.php

<response>
    <status>
        200
    </status>
    <mode>
        VisaCreditCard
    </mode>
    <options>
        <option name="Transfer" url="http://myapi.com/controller/transfer?id=8230&reason=illness" />
        <option name="Cancel" url="http://myapi.com/controller/cancel?id=3934"/>
        <option name="New Booking" url="http://myapi.com/controller/book_new" />
    </options>
</response>

内部の値はあいまいですが、タグ名はアプリケーションで使用しているものと同じであることに注意してください。<options>とに気づいてほしいからです<option/>

問題

問題は、APIを呼び出すと、CIがすべての仕事をしてから、画面に表示されるすべてのビューを提供することです

200 VisaCreditCard

ページのソースコードを確認すると、正確に必要なもの、つまりrespons.phpファイルにあるテキストが られますURL。


サーバー情報

  • Ubuntu 13.04

  • アパッチ2

  • PHP5

  • Codeigniter 2.1.3 (PHP ショートタグを書き直す - FALSE & .htaccess で index.php を省略)


4

1 に答える 1

0

ほぼ 7 時間のヘッドバンギング検索、実験、および苦しみの後、明るみに出ました。


2つのことを行い、解決しました。

  1. を宣言したヘッダーに設定しContent-Type:text/xmlます。
  2. 3 番目のパラメーターを省略します$this->load->view('response',$data)

今私のコードは次のとおりです。

<?php header ("Content-Type:text/xml"); ?>

<response>
    <status>
        200
    </status>
    <mode>
        VisaCreditCard
    </mode>
    <options>
        <option name="Transfer" url="http://myapi.com/controller/transfer?id=8230&reason=illness" />
        <option name="Cancel" url="http://myapi.com/controller/cancel?id=3934"/>
        <option name="New Booking" url="http://myapi.com/controller/book_new" />
    </options>
</response>

&また、 を に変換することを忘れないでください。そうしないと、&amp;再びエラーが発生します。

于 2013-06-20T16:29:54.593 に答える