Groovy HttpBuilder获得了标题的价值

时间:2017-10-06 09:56:20

标签: java groovy syntax maps httpbuilder

我正试图从HttpBuilder中获取标题,并对使用Check yii2 doc. [http://www.yiiframework.com/doc-2.0/yii-web-uploadedfile.html] if (Yii::$app->request->isPost) { $model->imageFile = UploadedFile::getInstance($model, 'imageFile'); $tempFilePath = $model->imageFile->tempName; //Send Email. } headers."Header name"

之间的区别感到困惑
headers["Header name"]

所以结果不同。你能解释它是如何工作的吗?我确信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 } } something."key"

相同

1 个答案:

答案 0 :(得分:0)

取决于您使用这些语法的内容。

如果您在Map上使用这些语法,那么您就是对。

headers字段不是Map,而是提供这些不同语法的HeadersDecorator实例。只需单击链接即可访问相应的JavDoc。

在Groovy中使用操作符就是调用方法,你甚至可以覆盖它们来改变操作符的行为。在Map的情况下,getAt(Object)对值进行括号语法检索,propertyMissing(String)如果没有具有该名称的对象属性,则对值进行点符号检索。

如果有HeadersDecorator getAt(String)Header对象和propertyMissing(String)的括号语法检索会对标头值进行点符号检索(如果有)没有具有该名称的对象属性。