Skip to content

Commit

Permalink
added support for body in GET method
Browse files Browse the repository at this point in the history
  • Loading branch information
fracpete committed Aug 2, 2020
1 parent 841062e commit ad4b43d
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 4 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ The following sections describe how to use the library.

### Creating a request
The following methods are supported through the `com.github.fracpete.requests4j.Requests` class:
* GET -- `Requests.get()`
* GET -- `Requests.get()` (also supports sending a payload, though this is not
recommended by [RFC 7231, section 4.3.1](https://tools.ietf.org/html/rfc7231#section-4.3.1))
* POST -- `Requests.post()`
* PUT -- `Requests.put()`
* PATCH -- `Requests.patch()`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
* @author FracPete (fracpete at waikato dot ac dot nz)
*/
public enum Method {
GET(false),
GET(true),
POST(true),
PUT(true),
PATCH(true),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpDeleteWithBody;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpGetWithBody;
import org.apache.http.client.methods.HttpHead;
import org.apache.http.client.methods.HttpOptions;
import org.apache.http.client.methods.HttpPatch;
Expand Down Expand Up @@ -885,7 +885,7 @@ protected <T extends Response > T doExecute(T response) throws Exception {
try {
switch (m_Method) {
case GET:
request = new HttpGet(url.toURI());
request = new HttpGetWithBody(url.toURI());
break;
case POST:
request = new HttpPost(url.toURI());
Expand Down
71 changes: 71 additions & 0 deletions src/main/java/org/apache/http/client/methods/HttpGetWithBody.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/*
* HttpGetWithBody.java
* Copyright (C) 2020 University of Waikato, Hamilton, NZ
*/

/*
* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/

package org.apache.http.client.methods;

import org.apache.http.annotation.NotThreadSafe;

import java.net.URI;

/**
* HTTP GET method, but with support of sending a body, which is not
* recommended by the <a href="https://tools.ietf.org/html/rfc7231#section-4.3.1">RFC 7231, section 4.3.1</a>,
* but used by other frameworks (like requests and django).
*/
@NotThreadSafe
public class HttpGetWithBody extends HttpEntityEnclosingRequestBase {

public final static String METHOD_NAME = "GET";

public HttpGetWithBody() {
super();
}

public HttpGetWithBody(final URI uri) {
super();
setURI(uri);
}

/**
* @throws IllegalArgumentException if the uri is invalid.
*/
public HttpGetWithBody(final String uri) {
super();
setURI(URI.create(uri));
}

@Override
public String getMethod() {
return METHOD_NAME;
}

}

0 comments on commit ad4b43d

Please sign in to comment.