Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ติดปัญหาการเรียก .net เว็ปเซอร์วิสจาก PHP ครับ (Consuming .Net Webservice from PHP)



 

ติดปัญหาการเรียก .net เว็ปเซอร์วิสจาก PHP ครับ (Consuming .Net Webservice from PHP)

 



Topic : 071468



โพสกระทู้ ( 18 )
บทความ ( 0 )



สถานะออฟไลน์




คือพอดีว่าผมทำ project จบ ในเรื่องเกี่ยวกับ webservice อ่ะครับ โดยเขียน web service ประมาณ 3 ภาษา และใช้ php ในการเป็นหน้า portal เพื่อแสดงรูปแบบของข้อมูลนะครับ โดยในตอนนี้ผมติดปัญหาในส่วนของการเรียกใช้งาน .net webservice จากหน้า portal(PHP) ครับ ซึ่งในฝั่ง .net เนี่ยผมก็เขียนเว็ปเซอร์วิสที่ใช้ได้จริงแล้วนะครับ เพราะลองทดสอบกับ SoapUI แล้วครับ โดย url ของ wsdl ชื่อนี้ครับ http://localhost:50459/Service1.asmx?WSDL พอไม่สามารถเรียกใช้งานได้ผมก็เลยลองหา .net เว็ป service จากภายนอกมาลองเรียกใช้ดูปรากฏว่าเรียกใช้งานได้ครับ ผมก็เลยงงๆ ว่ามันเกิดอะไรขึ้น ในตอนแรกผมคิดไปว่าน่าจะเกิดจาก namespace ที่ใช้ เพราะใน php มัน gen ออกมาเป็น ns1 แต่เวลาเรียกใน SoapUI มันจะ gen เป็น tem ครับ แต่ก็ไม่ใช่เพราะผมลองปรับ namespace แล้วก็ยังคงเป็นอยู่ครับ ต่อมาผมก็มาดูเรื่องของ header เพราะไม่แน่ใจว่า .net มันจะทำพวก credential ให้เองหรือป่าว แต่ก็ปรากฏว่าไม่ใช่ สุดท้ายผมลองมาเปลี่ยนจาก localhost ให้กลายเป็น 127.0.0.1 ดูเพราะเมื่อก่อนผมเคยมีปัญหากับการสร้างเว็ปเซอร์วิสจาก php และใช้ php เรียกเช่นกัน ซึ่งผลก็คือไม่ได้เช่นกันครับ สุดท้ายผมได้แต่คิดว่าอาจจะเป็นเพราะ localhost หรือป่าว เพราะ php ก็ใช้ localhost และ .net เองก็ใช้ localhost อาจจะทำให้เกิดอะไรสักอย่างที่ผมก็ไม่แน่ใจเหมือนกัน ถ้ายังไงเพื่อนๆ พี่ๆ น้องๆ คนใดที่เคยเขียนในลักษณะอย่างผมนี้แล้วใช้งานได้ปกติรบกวนแนะนำด้วยนะครับ เด๋วผมจะแนบ code ที่ใช้เรียก, code ที่ใช้สร้างตัว service, และ output ให้ดูนะครับ ขอบคุณครับ

Code ที่ใช้เรียก(PHP)

Code (PHP)
<?php
    $client = new SoapClient("http://127.0.0.1:50459/Service1.asmx?WSDL",array(
		"trace" => 1,
		"exceptions" => 0));
 
    $result = $client->CalculateVAT(array('Price' => '1000', 'VATRate' => '7'));
 
	print "<pre>\n";
	print "Request :\n".htmlspecialchars($client->__getLastRequest()) ."\n";
	print "Response :\n".htmlspecialchars($client->__getLastResponse()) ."\n";
	print "<pre>";
?>


Code ที่ใช้สร้าง Service (.Net)

Code (VB.NET)
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel

' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Service1
    Inherits System.Web.Services.WebService

    <WebMethod()> _
    Public Function CalculateVAT(ByVal Price As Decimal, _
                                 ByVal VATRate As Decimal) As Decimal
        CalculateVAT = Price * (VATRate / 100)
    End Function

End Class


และผลลัพธ์ที่ได้ครับ โดยมัน connect เจอนะครับ เหมือนกับส่ง request ไปแล้วแต่ไม่ได้ response กลับมาครับ

Request :
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/">
<SOAP-ENV:Body>
<ns1:CalculateVAT>
<ns1:Price>1000</ns1:Price>
<ns1:VATRate>7</ns1:VATRate>
</ns1:CalculateVAT>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Response :



Tag : PHP, CakePHP, Web (ASP.NET), WebService







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-01-07 13:37:28 By : zubduce View : 1521 Reply : 5
 

 

No. 1



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ผมไม่เคยเขียน .net และไม่ได้เชี่ยวชาญ webservice นะคับ

.net นี่ไม่ต้องมีคำสั่ง return เหมือน ruby เหรอคับ มัน return ให้เองเหรอ ?
เพราะ ไม่เห็นมี การคืนค่า CalculateVAT






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-07 18:19:06 By : pjgunner.com
 


 

No. 2



โพสกระทู้ ( 18 )
บทความ ( 0 )



สถานะออฟไลน์


มีการ return แล้วครับ เพราะอันนี้ผมเขียนเป็นลักษณะ function ซึ่ง function นั้นจะต้องมีการคืนค่า 1 ค่าอยู่แล้วครับ ซึ่งก็คือคืนค่าในชื่อ function ของมันแหละครับ โดยผมประกาศไว้ตรงนี้ครับ

Public Function CalculateVAT(ByVal Price As Decimal, _
15.ByVal VATRate As Decimal) As Decimal

โดยจะเห็นว่า Calculate นั้นตอนท้าย code ผมได้ประกาศไว้ว่า As Decimal

ซึ่งปัญหาที่ผมเจอจริงๆ แล้วไม่ใช่เรื่องการ return ค่าแต่อย่างใด เพราะผมได้ทดสอบเรียกผ่าน soapUI ดูแล้ว ซึ่งมันก็คืนค่าที่ถูกต้องครับ แต่ตอนนี้ติดที่เรื่องของการ response ของตัว webservice เท่านั้นครับ โดยในตอนนี้ผมคิดว่าจะลอง deploy ขึ้นตัว IIS ดู เพื่อให้มันได้ url ของมันจริงๆ แล้วจะลองเรียกดูอีกที ว่าจะได้ผลอย่างไรครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-08 12:28:49 By : zubduce
 

 

No. 3



โพสกระทู้ ( 3,468 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter

ไม่มีไฟล์ wsdl เหรอคับ หรือมันสร้างให้อัตโนมัติ ลองเอามาดูคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-08 18:29:39 By : pjgunner.com
 


 

No. 4

Guest


ไม่เคยเขียน VB นะครับ แต่ C# ต้องมี return

ลองดูตัวอย่างตามลิ้งนะครับ เป็นการใช้ PHP เรียก WebService ที่เขียนโดย ASP.NET C# โดยใช้ nusoap Library

http://korakitinfo.com/hong/readarticle/80
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-24 14:17:43 By : korakitinfo.com
 


 

No. 5



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook



Go to : PHP กับ SoapClient และเรียกเว็บเซอร์วิส ของ ASP.NET Web Service (php_soap.dll)
Go to : PHP - Calling .NET Web Service ใช้ PHP เรียกเว็บเซอร์วิส ของ .NET ด้วย nusoap
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-09 06:23:04 By : mr.win
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ติดปัญหาการเรียก .net เว็ปเซอร์วิสจาก PHP ครับ (Consuming .Net Webservice from PHP)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่