سؤال

أحاول إرسال رسالة صابون إلى خدمة باستخدام PHP.
أريد أن أفعل ذلك مع fsockopen ، إليك الكود:

<?php

$ fp =fsockopen ("ssl: //xmlpropp.worldspan.com" ، 443 ، $ errno ، $ errstr) ؛

if (! is_resource ($ fp)) {die ('fsockopen faited for number'. $ errno. '.'. $ errstr) ؛ }

$ soap_out = "post /xmlts http /1.1 r n" ؛ $ soap_out. = "المضيف: 212.127.18.11:8800RN" ؛ // $ soap_out. = "user-ogent: mysoapisokguys r n" ؛ $ soap_out. = "نوع المحتوى: text/xml ؛ charset = 'utf-8' r n" ؛ $ soap_out. = "محتوى طول: 999 r n r n" ؛ $ soap_put. = "الاتصال: أغلق r n" ؛ $ soap_out. = "soapaction: r n" ؛ $ soap_out. = 'WorldSpan هذا اختبار' ؛

if(!fputs($fp, $soap_out, strlen($soap_out)))
    echo "could not write";
echo "<xmp>".$soap_out."</xmp>";
echo "--------------------<br>";

while (!feof($fp)) 
{
    $soap_in .= fgets($fp, 100);
}

echo "<xmp>$soap_in</xmp>";   

fclose($fp);
echo "ok";

الرمز أعلاه معلق فقط. إذا قمت بإزالة ما هو على ما يرام ، لذلك أفترض أن المشكلة عند $ soap_in. = fgets ($ fp ، 100)

أي أفكار لما يحدث

هل كانت مفيدة؟

المحلول

ليس مجرد مسألة فتح مقبس ثم كتابة "Post ...." - أنت بحاجة إلى مكدس HTTP كامل لتحليل الاستجابات المحتملة (على سبيل المثال ما هي المحتوى الجزئي؟). استخدم حليقة.

السبب في فشله حاليًا هو أن النظام البعيد تم تكوينه لاستخدام Keepalives - والذي سيتم حله مرة أخرى باستخدام مكدس HTTP المناسب.

جيم

نصائح أخرى

أوصي ، استخدم حليقة لإجراءات الصابون. http://www.zimbra.com/forums/developers/9890-solved-simple-saap-admin-example-php.html#post52586

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top