1 /* 2 * ==================================================================== 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * ==================================================================== 20 * 21 * This software consists of voluntary contributions made by many 22 * individuals on behalf of the Apache Software Foundation. For more 23 * information on the Apache Software Foundation, please see 24 * <http://www.apache.org/>. 25 * 26 */ 27 28 package org.apache.http; 29 30 /** 31 * One element of an HTTP {@link Header header} value consisting of 32 * a name / value pair and a number of optional name / value parameters. 33 * <p> 34 * Some HTTP headers (such as the set-cookie header) have values that 35 * can be decomposed into multiple elements. Such headers must be in the 36 * following form: 37 * </p> 38 * <pre> 39 * header = [ element ] *( "," [ element ] ) 40 * element = name [ "=" [ value ] ] *( ";" [ param ] ) 41 * param = name [ "=" [ value ] ] 42 * 43 * name = token 44 * value = ( token | quoted-string ) 45 * 46 * token = 1*<any char except "=", ",", ";", <"> and 47 * white space> 48 * quoted-string = <"> *( text | quoted-char ) <"> 49 * text = any char except <"> 50 * quoted-char = "\" char 51 * </pre> 52 * <p> 53 * Any amount of white space is allowed between any part of the 54 * header, element or param and is ignored. A missing value in any 55 * element or param will be stored as the empty {@link String}; 56 * if the "=" is also missing <var>null</var> will be stored instead. 57 * 58 * @since 4.0 59 */ 60 public interface HeaderElement { 61 62 /** 63 * Returns header element name. 64 * 65 * @return header element name 66 */ 67 String getName(); 68 69 /** 70 * Returns header element value. 71 * 72 * @return header element value 73 */ 74 String getValue(); 75 76 /** 77 * Returns an array of name / value pairs. 78 * 79 * @return array of name / value pairs 80 */ 81 NameValuePair[] getParameters(); 82 83 /** 84 * Returns the first parameter with the given name. 85 * 86 * @param name parameter name 87 * 88 * @return name / value pair 89 */ 90 NameValuePair getParameterByName(String name); 91 92 /** 93 * Returns the total count of parameters. 94 * 95 * @return parameter count 96 */ 97 int getParameterCount(); 98 99 /** 100 * Returns parameter with the given index. 101 * 102 * @param index index 103 * @return name / value pair 104 */ 105 NameValuePair getParameter(int index); 106 107 } 108