2017-10-06 7 views
0

I'am는 headers."Header name"그루비 HttpBuilder 점점 헤더의 값

HTTPBuilder builder = new HTTPBuilder(); 
builder.setUri("https://stackoverflow.com/") 
builder.request(Method.GET) { 
    response.success = { resp -> 
     def header1 = resp.headers."Strict-Transport-Security" 
     def header2 = resp.headers["Strict-Transport-Security"] 
     println("Header toSting: ${header1}, Header class: ${header1.class}") //result: Header toSting: max-age=15552000, Header class: class java.lang.String 
     println("Header toSting: ${header2}, Header class: ${header2.class}") // result: Header toSting: Strict-Transport-Security: max-age=15552000, Header class: class org.apache.http.message.BufferedHeader 
    } 
} 

그래서 결과가 다른 headers["Header name"]을 사용 사이의 차이에 대해 HttpBuilder에서 헤더를 얻으려고 노력과 혼란. 어떻게 작동하는지 설명해 주시겠습니까? something."key"은 (는) something["key"]

답변

0

과 동일하다고 생각했습니다. 해당 구문을 사용하는 항목에 따라 다릅니다.

Map에서 해당 구문을 사용하는 것이 옳습니다.

그러나 headers 필드는 Map이 아니며 다른 구문을 제공하는 HeadersDecorator 인스턴스입니다. 각각의 JavDoc에 연결하려면 링크를 클릭하기 만하면됩니다.

Groovy에서 연산자를 사용하는 것은 호출되는 메소드 일 뿐이며 연산자를 재정 의하여 연산자 동작을 변경할 수도 있습니다. Map의 경우 getAt(Object) 값의 괄호 구문 구문 검색에서 해당 이름의 개체 속성이없는 경우 propertyMissing(String)은 값의 점 표기법 검색을 수행합니다. HeadersDecoratorgetAt(String) 경우

Header 객체의 브래킷 구문 검색을 수행하고 그 이름의 객체 속성이 없으면 propertyMissing(String) 헤더 값의 도트 표기법 검색을한다.