老板想让我们发送一个正文带参数的HTTP GET,我想不出用org.apache.commons.httpclient.methods.getMethod或者java .NET.HttpURLConnection怎么做;。GetMethod似乎不带任何参数,我不确定如何使用HttpURLConnection来实现这一点。
js5cn81o1#
您可以扩展HttpEntityEnclosingRequestBase类以覆盖继承的org.apache.http.client.methods.HttpRequestBase.getMethod(),但事实上HTTP GET不支持正文请求,并且可能会遇到一些HTTP服务器的问题,使用风险自担:)
public class MyHttpGetWithEntity extends HttpEntityEnclosingRequestBase { public final static String GET_METHOD = "GET"; public MyHttpGetWithEntity(final URI uri) { super(); setURI(uri); } public MyHttpGetWithEntity(final String uri) { super(); setURI(URI.create(uri)); } @Override public String getMethod() { return GET_METHOD; } } then import org.apache.commons.io.IOUtils; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; public class HttpEntityGet { public static void main(String[] args) { try { HttpClient client = new DefaultHttpClient(); MyHttpGetWithEntity e = new MyHttpGetWithEntity("http://...."); e.setEntity(new StringEntity("mystringentity")); HttpResponse response = client.execute(e); System.out.println(IOUtils.toString(response.getEntity().getContent())); } catch (Exception e) { System.err.println(e); } } }
1bqhqjot2#
HTTP GET方法不应有正文部分。可以使用URL查询字符串或HTTP标头传递参数。如果你想有一个BODY节,使用POST或其他方法。
vlju58qv3#
使用java.net.http.HttpRequest时,如果使用RequestBuilder构建一个,而不是使用不带参数的.GET()方法,请使用.method(method, bodyPublisher)
java.net.http.HttpRequest
.GET()
.method(method, bodyPublisher)
HttpClient clientFwd = HttpClient.newHttpClient(); HttpRequest get = HttpRequest.newBuilder() .uri(URI.create(YOURURI)) //GET, POST, PUT,.. .method("GET", HttpRequest.BodyPublishers.ofString(bodyGet)) .header("Content-Type", "application/json") .header("Authorization", "Bearer "+TOKEN) .build();
然后get.send()您的HttpRequest以获得您的响应。
get.send()
3条答案
按热度按时间js5cn81o1#
您可以扩展HttpEntityEnclosingRequestBase类以覆盖继承的org.apache.http.client.methods.HttpRequestBase.getMethod(),但事实上HTTP GET不支持正文请求,并且可能会遇到一些HTTP服务器的问题,使用风险自担:)
1bqhqjot2#
HTTP GET方法不应有正文部分。可以使用URL查询字符串或HTTP标头传递参数。
如果你想有一个BODY节,使用POST或其他方法。
vlju58qv3#
使用
java.net.http.HttpRequest
时,如果使用RequestBuilder构建一个,而不是使用不带参数的.GET()
方法,请使用.method(method, bodyPublisher)
然后
get.send()
您的HttpRequest以获得您的响应。