Ana içeriğe atla
Bu sayfa, Groovy script politikası kullanarak x-www-form-urlencoded formatında API çağrısı yapma işleminin nasıl yapılacağını açıklar.

Groovy Script

import groovy.json.JsonSlurper

try{
    String urlParameters = "url=parametreleri&burada=yerAlacak"
    byte[] postData = urlParameters.getBytes("UTF-8")
    int postDataLength = postData.length
    
    String request = "http://<SERVICE_IP>:30080/token"
    URL url = new URL(request)
    HttpURLConnection conn = (HttpURLConnection) url.openConnection()
    conn.setDoOutput(true)
    conn.setRequestMethod("POST")
    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded")
    conn.setUseCaches(false)
    
    try{
        DataOutputStream wr = new DataOutputStream(conn.getOutputStream())
        wr.write(postData)
        wr.close()
    }catch(Exception e){
        requestErrorMessageToTargetAPI = e.getMessage()
    }
    
    //do some logic with json response
    def json = conn.inputStream.withCloseable { inStream -> 
        new JsonSlurper().parse(inStream as InputStream) 
    }
    requestHeaderMapToTargetAPI.put("Authorization", "Bearer " + json.access_token)
    
    //or do some logic with text response
    String responseText = conn.inputStream.withCloseable { inStream -> 
        new BufferedReader(new InputStreamReader(inStream, "UTF-8")).getText() 
    }
}catch(Exception e){
    requestErrorMessageToTargetAPI = e.getMessage()
}

Açıklama

Bu script şu işlemleri yapar:
  1. Form Data Hazırlama: URL parametrelerini application/x-www-form-urlencoded formatında hazırlar.
  2. HTTP Bağlantısı: HTTP POST isteği için bağlantı oluşturur.
  3. Content-Type Ayarlama: application/x-www-form-urlencoded Content-Type’ı ayarlar.
  4. Veri Gönderme: Form data’yı POST body olarak gönderir.
  5. Yanıt İşleme: JSON veya text formatında yanıtı işler ve kullanır.

Kullanım Senaryosu

Bu script, OAuth token alma gibi işlemlerde kullanılabilir. Form data formatında parametreler gönderilir ve dönen access token header’a eklenir.
Bu script, request hattında (Request Policy) çalıştırılmalıdır çünkü requestHeaderMapToTargetAPI değişkenini kullanmaktadır.