ASP ile SOAP kullanımı biraz dertlidir. Ben yakın zamanda ki bir projemde iletişimi sağlamak için hazırladığım kod örneğini paylaşıyorum. Tabii yapıya göre, node isimlerine göre düzenlemeniz gerekebilir fakat ilk adım iletişimi sağlamaktır. Aşağıda ki kod örneği ile bu iletişimi sağlayabilirsiniz. s= stringi içinde SOAP yığını oluşturulur. Bu yığın POST_URL kısmında ki adrese POST edilir. Güvenlik için bazı header bilgilerine ihtiyaç duyabilirsiniz. Kod içinde ilgili örnekler mevcuttur. Gidecek header bilgilerini yapınıza ve iletişim kurduğunuz sisteme göre düzenlemeniz mümkündür.
<%
' Sayfa Tanımları ve Değişkenler
Response.Charset = "UTF-8"
Response.CodePage = 65001
Cmd = Request.Querystring("Cmd")
'İŞLEM SÜRESİNİ TAKİP ETMEK İÇİN ZAMANINI BAŞLAT
starttime = Timer
' HATALARI MANİPÜLE EDELİM
On Error Resume Next
'SOAP YAPISINI KURALIM
s=""
s=s& "<s:Envelope xmlns:s=""http://schemas.xmlsoap.org/soap/envelope/"">"
s=s& " <s:Body>"
s=s& " <UyeBul xmlns=""http://other.url.com.sample/"">"
s=s& " <login xmlns:a=""http://schemas.datacontract.org/2004/07/Services.DTO"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"">"
s=s& " <a:KullaniciAdi>XXX</a:KullaniciAdi>"
s=s& " <a:Parola>XXXXXX</a:Parola>"
s=s& " </login>"
s=s& " <skip i:nil=""true"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" />"
s=s& " <take i:nil=""true"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" />"
s=s& " <uyeTipleri xmlns:a=""http://schemas.microsoft.com/2003/10/Serialization/Arrays"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"">"
s=s& " </uyeTipleri>"
s=s& " <ozellikIdler i:nil=""true"" xmlns:a=""http://schemas.datacontract.org/2004/07/System"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" />"
s=s& " <anahtarKelime>QUERY</anahtarKelime>"
s=s& " </UyeBul>"
s=s& " </s:Body>"
s=s& "</s:Envelope>"
' FONKSİYONLAŞTIRMA
Function ReturnNode(objXMLDocResponse, NodePath, Tip)
If Tip = "NAME" Then
ReturnNode = objXMLDocResponse.selectSingleNode(NodePath).NodeName
End If
If Tip = "VAL" Then
ReturnNode = objXMLDocResponse.selectSingleNode(NodePath).Text
End If
End Function
'İLETİŞİME GEÇELİM
'Set oRequest = Server.CreateObject("MSXML2.ServerXMLHTTP")
Set oRequest = Server.CreateObject("Microsoft.XMLHTTP")
'oRequest.setOption(2) = 13056 'SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS
'oRequest.setTimeouts 10000, 10000, 10000, 10000
oRequest.Open "POST", "POST_URL", False
oRequest.setRequestHeader "Content-type", "text/xml; charset=utf-8"
oRequest.setRequestHeader "SOAPAction", "SOAP_HEADER_DATASI"
oRequest.send s
'HATA VARSA YAZ, YOKSA CEVABI DÖNDÜR.
If Err <> 0 Then
Response.Write "<pre>"
Response.Write Err.description
Response.Write "</pre>"
Else
If Cmd = "xml" Then
Response.ContentType = "text/xml"
Response.Write oRequest.responseText
Else
' XML PARSE
Set objXMLDocResponse = oRequest.responseXML
str_HATA_DURUMU = objXMLDocResponse.selectSingleNode("s:Envelope/s:Body/s:Fault/faultstring").Text
If str_HATA_DURUMU = "" Then
Response.Write "HATA YOK<br>"
Else
Response.Write "HATA KODU: " & ReturnNode(objXMLDocResponse, "s:Envelope/s:Body/s:Fault/faultcode", "VAL")
Response.Write "<br>"
Response.Write "HATA AÇIKLAMA: " & ReturnNode(objXMLDocResponse, "s:Envelope/s:Body/s:Fault/faultstring", "VAL")
Response.Write "<br>"
Response.Write "ÜRETİM SÜRESİ: " & FormatNumber(Timer - starttime , 4) &" s."
End If
Set objXMLDocResponse = Nothing
End If
'Response.Write oRequest.responseXML.xml
'Response.Write oRequest.responseXML.getElementsByTagName("faultstring")(0).innerText
End If
%>
merhaba ,
MSXML2.ServerXMLHTTP.6.0 yada MSXML2.ServerXMLHTTP kullanarak payu için bin sorgulama verilerini gönderiyorum
veriler doğru , lakin geri dönüş almak istediğimde ;
This page contains the following errors:
error on line 1 at column 2: StartTag: invalid element name
Below is a rendering of the page up to the first error.
hatasını geliyor.
yardımcı olabilirseniz sevirim , teşşekkürler
Merhaba Ahmet, hatan muhtemelen gelen veri içerisinde olmaması gereken kod öbekleri içerdiği için oluyor. Zaten sana hatayı satırı söylemiş sistem.
Merhaba.
Müşterim Restful webservis kullanmamızı istiyor, ASP ile ilgili paylaşmış olduğunuz bu kodlar işime yarar mı, yada nasıl bir yol izlemeliyim.
Teşekkürler
restfull ile de kullanabilirsiniz, önemli olan servislerin iletişim paketleri için kullandığı yapı. Burada ki örnek xml yapı kullanıyor, aynı şekilde soap veya json paket ile de kullanabilirsiniz.