เรื่องการส่ง post request

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: เรื่องการส่ง post request

Re: เรื่องการส่ง post request

by oxygenyoyo » 29/09/2008 10:08 pm

ขอบคุณ คุณ mindphp มากนะครับที่ค่อยตอบคำถามอยู่เสมอครับ

Re: เรื่องการส่ง post request

by mindphp » 29/09/2008 9:28 pm

ครับ :-D

Re: เรื่องการส่ง post request

by oxygenyoyo » 29/09/2008 8:49 pm

HTTP/1.1 200 OK
Date: Mon, 29 Sep 2008 06:44:30 GMT
Server: Apache/2.2.3 (Win32) PHP/5.1.6
X-Powered-By: PHP/5.1.6
Content-Length: 193
Connection: close
Content-Type: text/html


Array
(
[1] => <?xml version="1.0" encode="UTF-8"?><status>T</status>
[value] => <?xml version="1.0" encode="UTF-8"?><status>T</status>
[0] => 0
[key] => 0
)
OK INSERT SUCCESS


ได้แล้วครับคุณ mindphp ถ้าอย่างนี้ถ้าเค้าส่งมาผมก็สามารถรับได้แล้วอ่ะสิครับ

Re: เรื่องการส่ง post request

by mindphp » 29/09/2008 7:32 pm

เรื่อง Socket ลองอ่านดูตามบทความนี้ครับ ละเอียดดีทีเดียว
http://www.devshed.com/c/a/PHP/Socket-P ... -With-PHP/
ลองสร้างหน้า form ธรรมดา ขึ้นมา แล้วกำหนด field ใส่ข้อมูลลงไป เลียนแบบการ POST ด้วย Socket ให้ POST จาก form ดูว่า response data ถูกต้องหรือเปล่า

Re: เรื่องการส่ง post request

by oxygenyoyo » 29/09/2008 6:57 pm

HTTP/1.1 200 OK Date: Mon, 29 Sep 2008 04:55:47 GMT Server: Apache/2.2.3 (Win32) PHP/5.1.6 X-Powered-By: PHP/5.1.6 Content-Length: 81 Connection: close Content-Type: text/html array(0) { } Array ( [1] => [value] => [0] => 0 [key] => 0 )

บรรทัดบนคือแก้จาก \r\n เป็น \n ก็ยังผลเหมือนเดิม แต่ test ในเครื่องครับ


HTTP/1.1 200 OK Content-Type: text/html Server: Microsoft-IIS/6.0 X-Powered-By: PHP/4.4.6 X-Powered-By: ASP.NET Date: Mon, 29 Sep 2008 05:11:10 GMT Connection: close array(0) { } Array ( [1] => [value] => [0] => 0 [key] => 0 )


บรรทัดบนคือแก้จาก \r\n เป็น \n แต่ test ที่โฮสครับ


ส่วนเรื่อง ssl ไม่ต้องสนใจก็ได้ครับผมตอนนี้ก็ต้องการแบบธรรมดาให้ส่งค่าได้ก่อน

Re: เรื่องการส่ง post request

by mindphp » 29/09/2008 6:50 pm

ลอง สั่ง Post ค่า ไปที่ Host ที่เป็น http ธรรมดาก่อน (ทำทั้งจำลองของตัวเอง และ up ไปที่ Host อื่น ที่ใช้ OS ต่าง กัน)
แล้วค่อย test กับ ssl ทั้ง สอง host อีกที

ปล. ต้องแน่ใจด้วยว่า ใช้อะไรเป็นตัวแยกระหว่าง Head กับ data ผมเห็นตอนนี้ใช้ "\r\n" ลองเป็น "\n" ด้วย ได้ผลยังไงบอกด้วยครับ

Re: เรื่องการส่ง post request

by oxygenyoyo » 29/09/2008 6:37 pm

ผมได้ทำการจองการส่งเป็นอย่างนี้ครับ

Code: Select all

$port = "80";
$path = "/dna/recive_feed_update_ucl.php";
$host = "localhost";
$method = "POST";
$contenttype = "text/xml";
$data = $data;

// script
if($port == 443)
      $sslhost = "ssl://".$host;
else
      $sslhost = $host;
$fp = fsockopen($sslhost, $port);
fputs($fp, "$method $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Content-type: $contenttype\r\n");
fputs($fp, "Content-length: ".strlen($data)."\r\n");
fputs($fp, "Connection: close\r\n");
fputs($fp, "\r\n$data");

	 while (!feof($fp)) {
       echo fgets($fp, 128);
   }
   fclose($fp);
แต่ค่าที่กลับมาคือ

Code: Select all

HTTP/1.1 200 OK Date: Mon, 29 Sep 2008 04:37:25 GMT Server: Apache/2.2.3 (Win32) PHP/5.1.6 X-Powered-By: PHP/5.1.6 Content-Length: 13 Connection: close Content-Type: text/html ไม่มีข้อมูล

คำว่าไม่มีข้อมูลนั้นลองทำการเช็คดูว่ามีการส่งค่า post มาหรือเปล่าโดย var_dump($_POST);

แล้วเช็ค if ดูอ่ะครับ

ผมไม่รู้จะทำยังไงดีอ่ะครับ

Re: เรื่องการส่ง post request

by mindphp » 29/09/2008 5:57 pm

php สามารถสั่ง หรือ ส่ง Post ค่าไปที่ Server อื่น ที่ผมทราบ เละเคยทดสอบ มี สอง วิธี คือ
1. ใช้ socket ก็ function ที่ คุณ oxygenyoyo บอกมาคือ ใช้ fsockopen
2. ใช้ Curl lib
โดยทั้งสองแบบ ตอนส่ง ต้องกำหนด ในส่วน ของ Header กับ body ไป ทำเลียนแบบ การส่ง จากหน้า page
ทั้งนี้ต้องเช็คค่า response ด้วย

Top