2013-07-19 48 views
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) 
//================================ 

回答

2

你可能有public X509Certificate[]getAcceptedIssuers() {null}之間的換行符在粘貼代碼的結果

嘗試刪除換行符(並將代碼格式化爲適中可讀的內容),並且錯誤應該消失。

+0

謝謝。由於數組的原因,各種匿名類對我來說肯定有點令人困惑。你是正確的刪除換行修復它,但這似乎也不明顯 - 即不能有一個空白/換行符根據需要? – Ray

+0

有些地方空白很重要。這是編碼標準很重要的許多原因之一。 – codelark

+0

這裏的問題是第二行本身是一個有效的表達式。由於Groovy沒有指定,因此它自動將'Object'作爲返回類型。由於第二行是一個有效的表達式,因此編譯器不知道將它與前一行(或可能是下一行)結合在一起。它很快變得模糊不清。 – codelark

相關問題