我正在使用org.apache.http.HttpResponse
我想创建一个空的虚拟resposne,我将使用它在发生错误时返回,而不是传回null。
我试图创造一个,它已经失去了奇怪的参数。有人可以告诉我如何创建一个。
答案 0 :(得分:19)
根据您使用的公共版本,您可能需要尝试DefaultHttpResponseFactory。这是图书馆在内部创建部分内容的方式,因此可能会或可能不会达到您的目的。
import org.apache.http.HttpStatus;
import org.apache.http.HttpResponse;
import org.apache.http.HttpResponseFactory;
import org.apache.http.HttpVersion;
import org.apache.http.impl.DefaultHttpResponseFactory;
import org.apache.http.message.BasicStatusLine;
HttpResponseFactory factory = new DefaultHttpResponseFactory();
HttpResponse response = factory.newHttpResponse(new BasicStatusLine(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, null), null);
答案 1 :(得分:1)
使用无操作方法实现HttpResponse
。
答案 2 :(得分:0)
实际上,实现HttpServletResponse看起来相当多,并且您将依赖于实际的Servlet实现。
我想我会使用request.getRequestDispatcher("/dummy.html").forward(request, response)
答案 3 :(得分:0)
您可以创建一个返回带有状态代码的 HttpResponse 的方法:
public HttpResponse<String> createDummyResponse(int statusCode) {
return new HttpResponse<>() {
@Override
public int statusCode() {
return statusCode;
}
@Override
public HttpRequest request() {
return null;
}
@Override
public Optional<HttpResponse<String>> previousResponse() {
return Optional.empty();
}
@Override
public HttpHeaders headers() {
return null;
}
@Override
public String body() {
return null;
}
@Override
public Optional<SSLSession> sslSession() {
return Optional.empty();
}
@Override
public URI uri() {
return null;
}
@Override
public HttpClient.Version version() {
return null;
}
};
}
您可以将其他属性(例如正文等)作为参数传递给方法 createDummyResponse。
答案 4 :(得分:0)
这个版本增加了实体内容,更紧凑一点:
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion.HTTP_1_1;
import org.apache.http.entity.ContentType.TEXT_HTML;
import org.apache.http.entity.StringEntity;
import org.apache.http.message.BasicHttpResponse;
import org.springframework.http.HttpStatus;
public static HttpResponse buildResponse(HttpStatus status, String text){
HttpResponse response = BasicHttpResponse(HTTP_1_1, status.value(), status.reasonPhrase);
response.setEntity(StringEntity(text, TEXT_HTML));
return response;
}
请注意,我使用 Spring HttpStatus 只是为了方便起见,但可以使用参数进行更改