Bermain dengan Soap di postman


postman
postman

Ini 2017, kata orang zamannya Restful yang kekinian. Tapi ternyata SOAP masih banyak yang pakai. Setidaknya layanan perusahaan anu yang mengharuskan penggunanya memakai sabun SOAP untuk mendapatkan datanya.

Nah karena saya masih dalam level pra-newbie, maka harus belajar dulu bagaimana mengonsumsi data yang dikirim dengan format XML ini. Untuk mengetahui apa itu SOAP, WSDL, dan tetek-bengeknya, silakan baca saja di thread ini. Saya salin tempel mentah-mentah:

A WSDL is an XML document that describes a web service. It actually stands for Web Services Description Language.

SOAP is an XML-based protocol that lets you exchange info over a particular protocol (can be HTTP or SMTP, for example) between applications. It stands for Simple Object Access Protocol and uses XML for its messaging format to relay the information.

REST is an architectural style of networked systems and stands for Representational State Transfer. It’s not a standard itself, but does use standards such as HTTP, URL, XML, etc.

Sebelum terjun ke bahasa java, langkah awal adalah mempelajari cara mengakses dan mengirimkan data xml itu. Supaya mudah, pakai postman saja. Meski mudah, ternyata agak ribet jika dibandingkan dengan REST biasa yang formatnya json.

Jadi, ada dua hal yang harus diperhatikan ketika mengonsumsi data soap, yakni header dan body. Pada bagian header, isi Content-Type dengan tipe text/xml. Sementara pada bagian body, pilih metode raw, dengan format request body sebagai berikut:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ap="http://www.apalahdotkom.com/path/to/xmlnya/">
    <soapenv:Header></soapenv:Header>
    <soapenv:Body>
        <ap:getFUngsinya>
            <ap:kalauAdaVariabelnya>Inivariabelnya</ap:kalauAdaVariabelnya>
        </ap:getFUngsinya>
    </soapenv:Body>
</soapenv:Envelope>

Cukup basa-basinya. Kita coba contoh dari w3school yang menampilkan fungsi mengubah suhu dari derajat celcius ke fahrenheit atau sebaliknya. Misalkan kita akan mencoba akses fungsi celcius ke fahrenheit, maka masukkan alamat berikut ke bagian URL, dan jangan lupa pilih tipe POST.

https://www.w3schools.com/xml/tempconvert.asmx?op=CelsiusToFahrenheit

Jangan lupa masukkan parameter Content-Type: text/xml di bagian header. Lalu pada bagian body, pilih raw dan isi formatnya sebagai berikut (misal ingin menghitung suhu 12 derajat celcius):

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
	xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:ww="https://www.w3schools.com/xml/"
	>
  <soap:Body>
    <ww:CelsiusToFahrenheit>
      <ww:Celsius>12</ww:Celsius>
    </ww:CelsiusToFahrenheit>
  </soap:Body>
</soap:Envelope>

Jika tidak ada halangan, rintangan, dan cobaan, maka seharusnya pada bagian response akan muncul seperti ini:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <CelsiusToFahrenheitResponse xmlns="https://www.w3schools.com/xml/">
            <CelsiusToFahrenheitResult>53.6</CelsiusToFahrenheitResult>
        </CelsiusToFahrenheitResponse>
    </soap:Body>
</soap:Envelope>

Jika yang muncul seperti di bawah, pastikan header diisi dengan benar, yakni tipenya text/xml bukan yang lain.

The server cannot service the request because the media type is unsupported.

Ya sudah, sekian saja untuk tulisan kali ini. Berikutnya, bagaimana si data ini bisa dibaca sama java, menggunakan librari ksoap2 *kemudian pusing*. Doakan hamba, pemirsah!


2 responses to “Bermain dengan Soap di postman”

  1. Wah, jaman saya belum lahir nih. Saya liat itu satu kali request hanya manggil satu fungsi dengan satu parameter. Bisa nggak nyabun sekali request panggil beberapa fungsi sekaligus, lalu responnya juga sekaligus?

  2. […] Tak afdol rasanya jika aplikasi Android yang kita bangun tidak bisa berkomunikasi dengan dunia luar. Tidak online. Tidak terhubung ke awan. Nah, salah satu cara aplikasi berkomunikasi dengan dunia luar adalah melalui perantara API, entah itu lewat Restful maupun GraphQL. Sementara sebagian kecil masih setia dengan sabun soap. […]

Ada komentar?

This site uses Akismet to reduce spam. Learn how your comment data is processed.