LOADING

Type to search


Classic ASP ile SOAP iletişimi

Share

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.


ASP İle Soap İletişim Örneği


<%
' 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
%>

Tags:
Anthony Burak DURSUN

Adjans Digital Agency CEO, Gömülü sistemler, yazılım, fotoğraf çekmek, tasarım, teknoloji konularına hisli, evli, 4 kedi babası, asabi, anksiyetik bir kişi. Tekrarlayan şeyleri sevmez, her an her şey hakkında yazabilir, konuşabilir. Önceki hayatında marangoz olduğunu düşünüyor.

  • 1

4 Comments

  1. ahmet yusuf 7 Mart 2018

    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

    Cevapla
    1. Anthony Burak DURSUN 15 Mart 2018

      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.

  2. Mehmet Yan 3 Eylül 2021

    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

    Cevapla
    1. Anthony Burak DURSUN 9 Aralık 2021

      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.

Leave a Comment

Your email address will not be published. Required fields are marked *

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.