1 /* 2 * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/client/methods/HttpOptions.java $ 3 * $Revision: 664505 $ 4 * $Date: 2008-06-08 06:21:20 -0700 (Sun, 08 Jun 2008) $ 5 * 6 * ==================================================================== 7 * Licensed to the Apache Software Foundation (ASF) under one 8 * or more contributor license agreements. See the NOTICE file 9 * distributed with this work for additional information 10 * regarding copyright ownership. The ASF licenses this file 11 * to you under the Apache License, Version 2.0 (the 12 * "License"); you may not use this file except in compliance 13 * with the License. You may obtain a copy of the License at 14 * 15 * http://www.apache.org/licenses/LICENSE-2.0 16 * 17 * Unless required by applicable law or agreed to in writing, 18 * software distributed under the License is distributed on an 19 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 20 * KIND, either express or implied. See the License for the 21 * specific language governing permissions and limitations 22 * under the License. 23 * ==================================================================== 24 * 25 * This software consists of voluntary contributions made by many 26 * individuals on behalf of the Apache Software Foundation. For more 27 * information on the Apache Software Foundation, please see 28 * <http://www.apache.org/>. 29 * 30 */ 31 32 package org.apache.http.client.methods; 33 34 import java.net.URI; 35 import java.util.HashSet; 36 import java.util.Set; 37 38 import org.apache.http.Header; 39 import org.apache.http.HeaderElement; 40 import org.apache.http.HeaderIterator; 41 import org.apache.http.HttpResponse; 42 43 /** 44 * HTTP OPTIONS method. 45 * <p> 46 * The HTTP OPTIONS method is defined in section 9.2 of 47 * <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC2616</a>: 48 * <blockquote> 49 * The OPTIONS method represents a request for information about the 50 * communication options available on the request/response chain 51 * identified by the Request-URI. This method allows the client to 52 * determine the options and/or requirements associated with a resource, 53 * or the capabilities of a server, without implying a resource action 54 * or initiating a resource retrieval. 55 * </blockquote> 56 * </p> 57 * 58 * @version $Revision: 664505 $ 59 * 60 * @since 4.0 61 * 62 * @deprecated Please use {@link java.net.URL#openConnection} instead. 63 * Please visit <a href="http://android-developers.blogspot.com/2011/09/androids-http-clients.html">this webpage</a> 64 * for further details. 65 */ 66 @Deprecated 67 public class HttpOptions extends HttpRequestBase { 68 69 public final static String METHOD_NAME = "OPTIONS"; 70 71 public HttpOptions() { 72 super(); 73 } 74 75 public HttpOptions(final URI uri) { 76 super(); 77 setURI(uri); 78 } 79 80 /** 81 * @throws IllegalArgumentException if the uri is invalid. 82 */ 83 public HttpOptions(final String uri) { 84 super(); 85 setURI(URI.create(uri)); 86 } 87 88 @Override 89 public String getMethod() { 90 return METHOD_NAME; 91 } 92 93 public Set<String> getAllowedMethods(final HttpResponse response) { 94 if (response == null) { 95 throw new IllegalArgumentException("HTTP response may not be null"); 96 } 97 98 HeaderIterator it = response.headerIterator("Allow"); 99 Set<String> methods = new HashSet<String>(); 100 while (it.hasNext()) { 101 Header header = it.nextHeader(); 102 HeaderElement[] elements = header.getElements(); 103 for (HeaderElement element : elements) { 104 methods.add(element.getName()); 105 } 106 } 107 return methods; 108 } 109 110 } 111