0
回答1至提供了一些Groovy代碼,但它不能編譯(對於我來說,Grovy控制檯版本2.1.3或在我的Grails 2.2.3應用程序中)。Groovy無法編譯從StackOverflow上給出的解決方案中的代碼
您能協助讓我知道我需要更改哪些代碼才能使用此代碼嗎?我得到的錯誤是:
unexpected token: public at line 14, column: 52 (... which is the "public X509 Certificate[]")
爲了快速參考答案1提供的代碼的解決方案是:
import javax.net.ssl.X509TrustManager
import javax.net.ssl.SSLContext
import java.security.cert.X509Certificate
import javax.net.ssl.TrustManager
import java.security.SecureRandom
import org.apache.http.conn.ssl.SSLSocketFactory
import org.apache.http.conn.scheme.Scheme
import org.apache.http.conn.scheme.SchemeRegistry
def http = new HTTPBuilder("https://your_unsecure_certificate_host")
//=== SSL UNSECURE CERTIFICATE ===
def sslContext = SSLContext.getInstance("SSL")
sslContext.init(null, [ new X509TrustManager() {public X509Certificate[]
getAcceptedIssuers() {null }
public void checkClientTrusted(X509Certificate[] certs, String authType) { }
public void checkServerTrusted(X509Certificate[] certs, String authType) { }
} ] as TrustManager[], new SecureRandom())
def sf = new SSLSocketFactory(sslContext, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)
def httpsScheme = new Scheme("https", sf, 443)
http.client.connectionManager.schemeRegistry.register(httpsScheme)
//================================
謝謝。由於數組的原因,各種匿名類對我來說肯定有點令人困惑。你是正確的刪除換行修復它,但這似乎也不明顯 - 即不能有一個空白/換行符根據需要? – Ray
有些地方空白很重要。這是編碼標準很重要的許多原因之一。 – codelark
這裏的問題是第二行本身是一個有效的表達式。由於Groovy沒有指定,因此它自動將'Object'作爲返回類型。由於第二行是一個有效的表達式,因此編譯器不知道將它與前一行(或可能是下一行)結合在一起。它很快變得模糊不清。 – codelark