Boss希望我们发送一个在正文中带有参数的HTTP GET。 我不知道如何使用org.apache.commons.httpclient.methods.GetMethod或java.net.HttpURLConnection;来做到这一点。
GetMethod似乎没有任何参数,而且我不确定如何为此使用HttpURLConnection。
HTTP GET方法永远不应具有正文部分。 您可以使用URL查询字符串或HTTP标头传递参数。
如果要有一个BODY部分。 使用POST或其他方法。
您可以扩展HttpEntityEnclosingRequestBase类以覆盖继承的org.apache.http.client.methods.HttpRequestBase.getMethod(),但实际上HTTP GET不支持主体请求,也许您会遇到一些HTTP服务器的麻烦,请自行使用风险:)
公共类MyHttpGetWithEntity扩展了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;
}
}
然后
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);
}
}
}