هناك جانبان لهذه الحكايه ، الاول هو كيفية توليد بقية الطلبات المشروعة ، والثانية هي كيفية التعامل مع الردود بشكل صحيح.
عندما يتعلق الأمر الى توليد الطلب ، لديك ثلاثة خيارات رئيسية. اولا ، يمكنك توليد الطلب يدويا باستخدام بي. اتش. بى راسيه للمهام. وهذا يمنحك مرونة كاملة في توليد الطلب ، ولكن هل يشمل معظم الترميز. الثانية ، يمكنك استخدام واحدة من بي. اتش. بى 'sالمدمج في طلب وظائف مثل file_get_contents () او ملف () / fopen () ، fread () ، وfclose (). مع هذا الأسلوب ، الكثير من المعلومات التفصيليه يجري التعامل آليا بواسطة بي. اتش. بى ، وعليك ان تلقى نفس الرد. واخيرا ، يمكنك استخدام مخصص الطبقة مصممة لتستخدم مع API في السؤال. عموما هذه الطبقات يتطلب شيئا اكثر من البارامتر قائمة ، وسيعود النتائج في شكل مخصص الجسم او جعلها يمكن الوصول اليها عن طريق الطبقة.
توليد طلبات يدويا فقط العويصه هي المرة الاولى ، وبعد ذلك ، اعادة استخدام الرموز ونمطيه ركلة الدخول المفاهيميه الوظيفة التي سوف تولد الطلب الاساسي هو جميل. اولا ، كل طلب بارامترات مستعدون لضمان انتقال السليم. المقبل ، وعنوان الموقع هو لنقطة انتهاء ولدت ، ثم معرب وشتتت على الاجزاء المكونة لها. واخيرا ، طلب هو نفسه ارسلت باستخدام مقابس :
Functioncallapi دولار (نقطة انتهاء ، devkey دولار ، مبلغ العمل ، ونوع دولار ، دولار الكلمات الرئيسية)
(
العمل دولار = urlencode دولار (العمل) ؛
النوع دولار = urlencode ($ النوع) ؛
كلمة رئيسية دولار = urlencode ($ كلمة رئيسية) ؛
|
|
مرت ثلاث من البارامترات موقع مشفر. هذا امر ضروري لضمان انها مرت سليم اكثر من عنوان الموقع. في المثال السابق ، والبحث عن "اسلوب" تم انجازها ؛ وإذا كان البحث قد جرى بدلا من "اسلوب الكتاب ،" الفضاءيه كان سيتطلب التشفير ، مما ادى الى اسلوب ٪ 20book. لقد أهمل تشفير devkey فإن المتغيرات ، ونثق ان اصدار السلطة احاطت كيف ستستخدم في الاعتبار عند صنع لهم.
موقع دولار = دولار نقطة انتهاء. "؟ Devkey دولار = devkey العمل دولار = & & نوع العمل دولار = & نوع الكلمات الرئيسية دولار = الكلمات الرئيسية "؛
دولار url_info = parse_url (موقع دولار) ؛
استضافة دولار = دولار url_info [ 'المضيفه'] ؛
الطريق دولار = دولار url_info [ 'الطريق']. "؟" . دولار url_info [ 'سؤال'] ؛
دولار البيانات = "" ؛
هنا عنوان الموقع هو نفسه الذي تولد ، وبما ان موقع مشفر - المعالم. عنوان الموقع يحتاج إلى تداعت نزولا الى الاجزاء المكونة لها لاستخدامها فى الخام المقبس الصدد.
فب دولار = fsockopen ($ المضيفه ، 80) ؛
Fputs ($ فب ، "ما بعد". الطريق دولار. "Http/1.1 \ R \ n") ؛
Fputs ($ فب ، "المذيع :". دولار المضيفه. "\ R \ n") ؛
Fputs ($ فب ، "قبول : * / * \ R \ n") ؛
Fputs ($ فب ، "يقبل - الاحرف : ايزو - 8859 - 1 ، الرموز العالمية لتحوير الهيءه - 8 ؛ Q = 0.7 ، * ؛ Q = 0.7 \ R \ n ") ؛
Fputs ($ فب ، "الصدد : قريبة \ R \ n") ؛
Fputs ($ فب ، "محتوى من نوع : تطبيق / x - الشبكه العالمية - الشكل - urlencoded \ R \ n") ؛
Fputs ($ فب ، "المحتوى - الطول :". Strlen ($ البيانات). "\ R \ n \ R \ n") ؛
Fputs ($ فب ، "$ البيانات") ؛
هنا المعلومات التي تولدها السابقة المدونه واخيرا ارسلت. الاولى fputs () يرسل خط الطريق الى الوثيقة المطلوبة ، والسطر الثاني يحدد المرجوة المضيفه.
دولار استجابة = "" ؛
بينما (! Feof ($ فب))
(
دولار استجابة مستعجل fgets (فب دولار ، 128) ؛
)
Fclose ($ فب) ؛
قائمة دولار (http_headers ، http_content دولار) = تنفجر ( "\ R \ n \ R \ n" ، وردا دولار) ؛
العودة http_content دولار ؛
)
واخيرا ، فان الرد الذي يسترجع ومضمون الرد هو عاد. انك تعلم كيفية التعامل مع الردود في الفروع التي تتناول هذا الجانب من الأمور قريبا.
بي. اتش. بى باستخدام 'sالمدمج في ملف الوظائف ، ونفس العملية يمكن ان يستكمل مع ناهيك عن المدونه (رغم انك قد اقل مرونة). وتعمل هذه الوظيفة المفاهيميه نفسها كما سابقتها ، باستثناء كل ملف المقبس يدعو استبدلت الكلمه لأحد file_get_contents () :
Functioncallapiquick دولار (نقطة انتهاء ، devkey دولار ، مبلغ العمل ، ونوع دولار ، دولار الكلمات الرئيسية)
(
العمل دولار = urlencode دولار (العمل) ؛
النوع دولار = urlencode ($ النوع) ؛
كلمة رئيسية دولار = urlencode ($ كلمة رئيسية) ؛
موقع دولار = دولار نقطة انتهاء. "؟ Devkey دولار = devkey العمل دولار = & & نوع العمل دولار = & نوع الكلمات الرئيسية دولار = الكلمات الرئيسية "؛
دولار استجابة = @ file_get_contents (موقع دولار) ؛
عودة دولار استجابة ؛
)
حقا ليس هناك الكثير لشرح مع هذا المثال. عنوان الموقع تشفير نوقش سابقا ، واحدة file_get_contents () يعالج كل الكلمه السحريه. آلو في الجبهة من وظيفة هي الكلمه المستخدمة لقمع اي التحذيرات التي قد تنشأ من عدم وجود ملف او عنوان ، لان هذه يجب ان يعالج عن طريق استدعاء وظيفة (file_get_contents () سيعود كاذبة في هذه الحالات) . في السابق php5 البيئات عليك ان تستعمل fopen () بدلا من file_get_contents (). بعض المرونة ضائعة مع هذا نوع الطلب ، لأنك لم يعد في امكان مجموعة العرف الراسيات او الاختياري الراسيات ، التي قد تكون لازمة او مرغوبا جدا اعتمادا على API مع الذي انت متفاعله.
كما شعبية من خدمات الشبكه العالمية الزيادات ، فهل شيوع prebuilt الصفوف لمعالجة اعمال قذره فعلا التفاعل مع الخادم. اذا كنت ترغب في الخدمة على التفاعل مع الطبقة المتاحة لديه ، ومن المؤكد ان النظر الى قيمتها. الوصول الى الدرجة بطبيعة الحال سوف يكون متوقفا على الدرجة نفسها. وينبغي ان تأتي مع وثائق كافية ، وليس من المحتمل الوصول سوف تختلف كثيرا من الامثله السابقة - للتو مع قليل من اكثر التحقق من الاخطاء (انت الأمل). شيء يبقى في الاذهان هو ان العديد من الوحدات هي prebuilt المتقدمه والتي تحتفظ بها أطراف ثالثة ، وعلى هذا النحو انك قد تضطر الى الانتظار بعض الوقت بعد ميزات جديدة يتم الافراج عن API لكي يصبحوا المتوفره في حسابك لدى الطبقة.
كيف لكم التعامل مع الاستجابة التي تعتمد على طريقة ارسال طلب اخترت. إذا كنت قد ولدت طلب اما يدويا او مع المعونة من احد بي. اتش. بى 'sالمدمج في مهام (مثل file_get_contents ()) انك ستحتاج ايضا الى معالجة استجابة يدويا. اذا كنت تستخدم اي طرف ثالث وحده ، فإن هذا سيكون له وصلة خاصة بها لاسترجاع النتائج.
الرد الذي قدمته خادم ينبغي ان يكون وثيقة أكس أم أل ؛ ولحسن الحظ ، وأكس أم أل صممت لتكون سهلة لأعرب. ولسوء الحظ ، مهما كان الغرض ، عادة يدويا تحليل اي شيء ليس الكثير من المرح. Php5 يأتي مع simplexml ، مما يجعل معالجة أكس أم أل الوثائق نسيم. Php4 المستخدمين لا يملكون simplexml ؛ بيد أن قلة من طرف ثالث مثل وحدات minixml متوفره ان تؤدي وظائف مماثلة.
مرة كنت قد تلقيت الرد ، والالتصاق قبل أن تتحول إلى وجوه simplexml ينبغي نسيم. باستخدام السابقة المكتبه مثلا طلب وظيفة ، اليكم ينتهي مع ان مثل هذا الشيء :
رد callapiquick دولار = ( 'http://library.example.com/api.php' ، '123' ، 'البحث' ،
'الكتاب' ، 'اسلوب') ؛
اذا دولار (استجابة)
(
أكس أم أل simplexml_load_string دولار = دولار (الاستجابة) ؛
Print_r ($ أكس أم أل) ؛
آخر)
(
الصدى "خطأ في تحميل تغذية" ؛
)
هنا ، الرد هو لا كاذبة) وبالتالي شيء ، والمفترض ان كانوا يأملون في أكس أم أل لكم ل، وقد عاد). علما ان هذا الافتراض صحيحا عموما جميلة. عندما خادم توفير API اللقاءات خطأ ، ينبغي ان يوفر خطأ في أكس أم أل لطيفة الشكل. فان simplexml_load_string () وظيفة يأخذ الرد وانها تتحول الى وجوه أكس أم أل التي يمكن الوصول اليها مباشرة ، من خلال الهجمات ، وهلم جرا. واخيرا ، print_r () نتائج مهمة في سهل الاستعمال الناتج عرض محتويات الجسم ، واظهرت هنا :
Simplexmlelement وجوه
(
[طلب] => simplexmlelement وجوه
(
[Requestid] => 123a456
[المعالم] => simplexmlelement وجوه
(
[الحجه] => صفيفه
(
[0] => simplexmlelement وجوه
(
(
[1] => simplexmlelement وجوه
(
(
[2] => simplexmlelement وجوه
(
(
[3] => simplexmlelement وجوه
(
(
(
(
(
[رد] => simplexmlelement وجوه
(
[Resultcount] => 2
[البند [=> صفيفه
(
[0] => simplexmlelement وجوه
(
[العنوان] => اسلوب الكتاب المجلد 1
[الحاله] => اصل
[يحمل] => 3
[Copiesonhand] => 2
[المؤلف] => جون دو
(
[1] => simplexmlelement وجوه
(
[العنوان] => اسلوب الكتاب المجلد 2
[الحاله] => في
[يحمل] => 0
[Copiesonhand] => 1
[المؤلف] => جون دو
(
(
(
(
وبالنظر الى ان الناتج ، زوجان أمور ينبغي ان تكون واضحة على الفور :
Simplexml هل حقا الكثير من الاشياء المفيدة لك بسرعة كبيرة.
نتج عن اشياء لا تعرض الصفات (انظر الحجه قائمة في اطار المعالم). البيانات هو في هناك ، فإنه لا يظهر للتو مع print_r ().
بدء العد في صفوف 0 (مثلهم مثل أي مكان آخر في بي. اتش. بى ، انها مجرد شيء ان نضع في اعتبارنا).
البند طائفة هو مجرد التسول على أن تكون محور نقاش مع foreach () الداره.
وإذ تضع جميع المعلومات التي في الاعتبار ، وإثنين من خطوط سريعه للقانون هي كل ما هو مطلوب لاستكشاف محتوى اكثر اكتمالا.
صدى "انت بحثت عن : ($ اكس ام أل -> طلب -> بارامترات -> حجة [3] -> القيمه) <br>" ؛هنا عبارة البحث ونتيجة الفرز ويرد ، وبعد ذلك نتائج هي نفسها خلال الهجمات. النحو يحصل قليلا غربة عند التعامل مع الصفوف (كما اتضح عندما عبارة البحث هو مطبوع) ، وهذا هو الحال في كثير من الاحيان من المعقول كرر خلالهم لالوضوح.
الباقي هو وسيلة فعالة للسؤال الناءيه ابيس عندما يكون مسموحا للطلب الخاص بك جزء من صفقة تتم في اضحة. خلق بقية الاسءله هو بالسهوله موقع - تشفير المطلوبة وتحديد معالم وجود نقطة انتهاء للدعوة. التعامل مع باقي الردود يمكن ان يكون اصعب قليلا ؛ ولكن ، قبل رفع الادوات مثل simplexml ، فهو ايضا يمكن ان ينجز على وجه السرعه.
Online: 530 users browsing the articles directory
|
|