rest ग्रोवी निर्मित आरईएसटी/HTTP क्लाइंट में?




groovy httpbuilder (6)

मूल ग्रोवी प्राप्त करें और पोस्ट करें

// GET
def get = new URL("https://httpbin.org/get").openConnection();
def getRC = get.getResponseCode();
println(getRC);
if(getRC.equals(200)) {
    println(get.getInputStream().getText());
}

// POST
def post = new URL("https://httpbin.org/post").openConnection();
def message = '{"message":"this is a message"}'
post.setRequestMethod("POST")
post.setDoOutput(true)
post.setRequestProperty("Content-Type", "application/json")
post.getOutputStream().write(message.getBytes("UTF-8"));
def postRC = post.getResponseCode();
println(postRC);
if(postRC.equals(200)) {
    println(post.getInputStream().getText());
}

मैंने सुना है कि ग्रोवी में एक अंतर्निहित आरईएसटी / HTTP क्लाइंट है। एकमात्र लाइब्रेरी जो मैं पा सकता हूं वह है HttpBuilder , क्या यह है?

असल में मैं किसी भी पुस्तकालय (यदि संभव हो तो) आयात किए बिना ग्रोवी कोड के अंदर से HTTP GET करने का एक तरीका ढूंढ रहा हूं। लेकिन चूंकि यह मॉड्यूल कोर ग्रोवी का हिस्सा नहीं दिखता है, इसलिए मुझे यकीन नहीं है कि मेरे पास सही lib है या नहीं।


import groovyx.net.http.HTTPBuilder;

public class HttpclassgetrRoles {
     static void main(String[] args){
         def baseUrl = new URL('http://test.city.com/api/Cirtxyz/GetUser')

         HttpURLConnection connection = (HttpURLConnection) baseUrl.openConnection();
         connection.addRequestProperty("Accept", "application/json")
         connection.with {
           doOutput = true
           requestMethod = 'GET'
           println content.text
         }

     }
}

सबसे सरल होना चाहिए:

def html = "http://google.com".toURL().text

HTTPBuilder यह है। उपयोग करने के लिए बहुत आसान है।

import groovyx.net.http.HTTPBuilder

def http = new HTTPBuilder('https://google.com')
def html = http.get(path : '/search', query : [q:'waffles'])

यह विशेष रूप से उपयोगी होता है यदि आपको GET के साथ सामग्री लाने से त्रुटि प्रबंधन और आम तौर पर अधिक कार्यक्षमता की आवश्यकता होती है।


मुझे नहीं लगता कि http-builder एक ग्रोवी मॉड्यूल है, बल्कि अपाचे http-क्लाइंट के शीर्ष पर एक बाहरी एपीआई है, इसलिए आपको कक्षाएं आयात करने और एपीआई का एक गुच्छा डाउनलोड करने की आवश्यकता है। जार और निर्भरताओं को डाउनलोड करने के लिए आप @Grab या @Grab का उपयोग कर बेहतर हैं:

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7.1' )
import groovyx.net.http.*
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.*

नोट: चूंकि कोडहॉस साइट डाउन हो गई है, इसलिए आप JAR ( https://mvnrepository.com/artifact/org.codehaus.groovy.modules.http-builder/http-builder ) पर जा सकते हैं


यदि आपकी ज़रूरतें सरल हैं और आप अतिरिक्त निर्भरताओं को जोड़ने से बचना चाहते हैं तो आप java.net.URL getText() विधियों का उपयोग करने में सक्षम हो सकते हैं जो ग्रोवी java.net.URL क्लास में जोड़ता है:

new URL("http://.com").getText()

// or

new URL("http://.com")
        .getText(connectTimeout: 5000, 
                readTimeout: 10000, 
                useCaches: true, 
                allowUserInteraction: false, 
                requestProperties: ['Connection': 'close'])

यदि आप बाइनरी डेटा की अपेक्षा कर रहे हैं तो newInputStream() विधियों द्वारा प्रदान की गई समान कार्यक्षमता भी है।





httpbuilder