残りの技術を導入する方法

この物語には2つの側面には、最初の方法は、合法的な残りのリクエストを生成し、 2つ目の反応はどのように処理するか確認します。

リクエストの生成

リクエストを生成したときのこととなると、次の3つのメインオプションがあります。 最初に、手動で生成することができ、リクエストを使用して、 phpのヘッダー機能します。 これにより、柔軟性を完全にあなたのリクエストを生成して、最もコーディングを伴うわけではありました。 第二に、使用することができphpの1つに組み込まれている機能のリクエストなどfile_get_contents ( )の( )またはファイル/ fopen ( )で、 fread ( )とfclose ( )のです。 この方法では、たくさんの詳細な情報は自動的に処理されるphpのは、お手元に届いたのと同じ反応します。 最後に、使用することができ、カスタムクラスに設計された、 apiの問題に使用されます。 通常、これらのクラスを必要以上のパラメータのリストに何もない、との結果が返されという形で、カスタムオブジェクトまたはクラスを介してアクセス可能にしています。

マニュアル世代

リクエストを生成するだけで、手動では難しい、初めて、それ以降は、コードの再利用性やモジュールの機能キックを生成します。概念的にはかなり基本的なリクエストします。 第一に、すべてのリクエストパラメータが用意さを確保するための適切な伝送します。 次に、指定してエンドポイントが生成され、その後パースを構成すると壊れた部分があります。 最後に、リクエスト自体はソケットを使用して送信:

functioncallapi ( $終点、 $ devkey 、 $アクション、 $タイプ、 $キーワード)

$ =アクションでurlencode ( $アクション) ;
$ =タイプでurlencode ( $タイプ) ;
$ =キーワードでurlencode ( $キーワード) ;

  

3つのパラメータが渡されるurlエンコードされます。 これは彼らを確保するために必要なのは、適切に渡されます。 は、前の例では、検索を実行する"スタイル"が行われ;検索された場合、代わりに"スタイルブック"のエンコードに必要なスペースが、その結果% 20bookスタイルします。 私が無視されたエンコーディングdevkey変数、信じて疑わないことはどうなるだろうとの発行権限を考慮し作成する際に使用されている。

$ = $ urlのエンドポイントします。 " ? devkey = $ devkey &アクション&アクションタイプ= $ = $ = $キーワードを入力したキーワード& " ;
$ url_infoするparse_url = ( $ url )を;
ホスト$ = $ url_info [ 'ホスト' ] ;
パス$ = $ url_info [ 'パス' ] 。 " ? " します。 $ url_info [ 'クエリ' ] ;
データ$ = " " ;

ここでのurl自体が生成され、パラメータを含め、今すぐにエンコードします。 urlをする必要がありdeconstructedダウン部品のコンポーネントを使用するために、 rawソケット接続してください。

$ fp =にfsockopen ( $ホスト、 80 ) ;
fputs ( $ fp 、 "投稿"します。 $パス。 " http/1.1 \ r \ " ) ;
fputs ( $ fp 、 "ホスト: "します。 $ホストします。 " \ r \ " ) ;
fputs ( $ fp 、 "を受け入れる: * / * \ r \ " ) ;
fputs ( $ fp 、 "のaccept - charset名: iso - 8859 - 1 、 utf - 8で;問= 0.7 、 * ;問= 0.7 \ r \ " ) ;
fputs ( $ fp 、 "接続:閉じる\ r \ " ) ;
fputs ( $ fp 、 "コンテンツタイプ:にapplication / x - www - urlエンコード形式\ r \ " ) ;
fputs ( $ fp 、 "コンテンツの長さ: "します。 strlen ( $データ)します。 " \ r \ n \ r \ " ) ;
fputs ( $ fp 、 " $データ" ) ;

ここでの情報が生成されたコードの前の最後に送信されます。 fputs ( )の最初の行のパスを要請文書を送信し、 2番目の行を指定し、希望のホストになります。

応答$ = " " ;
中( ! feof ( $ fp ) )

$ .=応答するfgets ( $ fp 、 128 ) ;

fclose ( $ fp ) ;
リスト( $ http_headers 、 $ http_content ) =爆発( " \ r \ n \ r \ " 、 $応答) ;
戻り$ http_content ;

最後に、応答が作成およびコンテンツの応答が返されます。 ハンドル応答する方法を説明して、セクションの側面に対処することをまもなく開始します。

クイック世代

phpの活用に組み込まれているファイルの関数の場合、同じプロセスを完了できるようにコードをはるかに少ない(ただし、柔軟性が少ないこと)します。 この関数は概念的に同じで、前の作品の1つを除いて、すべてのファイルを1つのソケットの通話が可能に置き換えられfile_get_contents ( )の電話をかける:

functioncallapiquick ( $終点、 $ devkey 、 $アクション、 $タイプ、 $キーワード)

$ =アクションでurlencode ( $アクション) ;
$ =タイプでurlencode ( $タイプ) ;
$ =キーワードでurlencode ( $キーワード) ;
$ = $ urlのエンドポイントします。 " ? devkey = $ devkey &アクション&アクションタイプ= $ = $ = $キーワードを入力したキーワード& " ;
応答ドル= @ file_get_contents ( $ url )を;
レスポンスを返す$ ;

実際には多くのことを説明し、この例です。 urlエンコードは、以前に話し合っており、 1つのfile_get_contents ( )の呼び出しを処理するすべての魔法のようだ。 アンパサンドの前に関数呼び出しが使用され、任意の警告を抑制することによって生じる可能性が存在しファイルまたはurl 、処理されなければならないため、これらの関数の呼び出し( file_get_contents ( )はfalseを返しこれらのインスタンス)します。 前のphp5環境を使用する必要がありfopen ( )の代わりにfile_get_contents ( )をします。 ある程度の柔軟性が失われ、このタイプのリクエストは、もはや設定ができますので、カスタムヘッダまたはオプションのヘッダーは、要求されるかもしれないかに応じて、非常に望ましいとしているapiの相互作用します。

自動ツール

ウェブサービスとしての人気が高くなると、普及するだろうということを処理するクラスをビルドされ、実際の汚い仕事は、サーバーと相互作用します。 サービスをしたい場合には、クラス内で利用可能な、それだけの価値は確かに検討しています。 にアクセスしてクラスはもちろん、クラス自体に依存しています。 なければなら十分なドキュメントが付いてくる、とアクセスされる可能性が異なる過ぎませんから、以前の例-だけで、もう少しエラーチェック(希望)します。 何かを念頭に置いておくには、多くの先進国とビルドされモジュールが維持される第三者機関は、このように、しばらく待っている場合がありますが発売された後の新機能のapiかれらのためになることでご利用いただけるクラスです。

処理応答

どのように対処する反応に依存して、リクエストを送信する方法を選択します。 リクエストを生成した場合は、手動で、またはいずれかの助けを借りて1つのphpに組み込まれている機能( file_get_contents ( )のような)を手動で処理する必要があり、応答します。 使用した場合は、サードパーティ製のモジュールで、それには、独自のインターフェイスを取得するために結果を確認する。

手動での応答解析

サーバーの応答で提供されなければならないxmlドキュメント;幸いなことに、 xmlのパースは簡単に設計されています。 残念なことに、どんなに設計だったが、手動ではありません、通常の解析に何かとても面白かった。 付属のphp5のsimplexmlで、これによりxml文書を簡単に処理します。 php4持っていないユーザーのsimplexml ;しかし、いくつかのようなサードパーティ製のモジュールを実行してminixml似たような機能が利用できます。

応答を受信していただけましたら、付着してsimplexmlオブジェクトなければならない非常に簡単です。 ライブラリを使って、前の例と機能のリクエストは、結局のところ、このように:

応答ドル= callapiquick ( ' http://library.example.com/api.php ' 、 '123 ' 、 '検索' 、
'本' 、 'スタイル' ) ;
もし( $レスポンス)

代入するsimplexml_load_stringする$ xml = ( $応答) ;
print_r ( $ xml )が;
他の)

エコー"フィードの読み込みエラー" ;

ここでは、虚偽の応答ではありません(したがって、何かを期待していたのxmlおそらく、返された)します。 注意して、この仮定は通常かなり有効とします。 サーバーapiを提供することに遭遇したときに、エラーを提供しなければならすてきなxml形式の中にエラーが発生します。 して代入するsimplexml_load_string ( )関数は、応答オブジェクトのxmlとターンして直接アクセスすることができ、反復を通して、としています。 最後に、 print_r ( )の機能は、ユーザーフレンドリーな出力結果を表示し、オブジェクトの内容を示すように、ここで:

simplexmlelementオブジェクト

[リクエスト] = > simplexmlelementオブジェクト

[ requestid ] = > 123a456
[パラメータ] = > simplexmlelementオブジェクト

[引数] = >配列

[ 0 ] = > simplexmlelementオブジェクト


[ 1 ] = > simplexmlelementオブジェクト


[ 2 ] = > simplexmlelementオブジェクト


[ 3 ] = > simplexmlelementオブジェクト





[ 応答] = > simplexmlelementオブジェクト

[ resultcount ] = > 2
[アイテム] = >配列

[ 0 ] = > simplexmlelementオブジェクト

[タイトル] = >スタイルフラメンコ特集rtve vol 1本
[ステータス] = >アウト
[保持] = > 3
[ copiesonhand ] = > 2
[著者] = >ジョンドウ

[ 1 ] = > simplexmlelementオブジェクト

[タイトル] = >スタイルの2本のフラメンコ特集rtve vol
[ステータス] = > "
[保持] = > 0
[ copiesonhand ] = > 1
[著者] = >ジョンドウ



出力して見ると、カップルなければならないことを、ただちに明らか:

  • simplexmlの実際にはたくさんのお役に立つことを非常に早くします。

  • その結果が表示されないオブジェクトの属性(引数のリストを参照してパラメータの下に)します。 そこでのデータは、それだけではありません。 print_r ( )は、表示されます。

  • 配列の開始カウントは0 (他のどこでも同じようにphpで、それは単に何かを念頭に置いておく)します。

  • アイテムの配列が処理されるだけで托鉢たforeach ( )のループします。

すべての情報を念頭に置いてベアリングして、いくつかのクイック行のコードはすべてのコンテンツを探求することが必要です。より完全にします。

エコー"を検索対象: ( $ xmlで>リクエスト> -パラメータ>の引数[ 3 ] ->値) < br>" ;
エコー"ここではお客様のxml - ( $ >応答> resultcount )結果<br> " ;
foreach ( $ xmlで>応答>アイテムとしてアイテム& $ )

エコー" ( $アイテム- > ( $されるアイテムのタイトル) - > )著者<br> " ;

ここでは、検索クエリの結果とカウントが提示し、その後、結果自体は反復処理がします。 ちょっと変な構文を取得する際に対処する配列(デモンストレーションとしては、印刷時には、検索クエリ)は、理にかなっているので、それはしばしば明確にするために反復処理しています。

残りの効果的な方法は、リモート照会apiのときは、リクエストの部分を許容して取引を明確にして行われています。 残りのクエリを作成するには、同じように簡単にurlをエンコードして必要なパラメータを指定すると、エンドポイントのコールします。 残りの回答を扱うことができ少し難しく;しかし、 simplexmlのようなツールを活用され、それも迅速に完了することができます。

これは、記事に追加されemanuelaヘドリック
免責事項:弊社のウェブサイト上に含まれる情報は、責任を負いませんこの記事されました。 この記事ではない方法での意見を反映して、ご意見、思想や信条の記事ディレクトリのスタッフします。

翻訳注意:記事"の残りの技術を導入する方法"を翻訳する自動翻訳サービスを使っています。 すべてのお客様にご迷惑を翻訳してエラーが発生しました。 理解していただきありがとうございました。

Online: 551 users browsing the articles directory