【发布时间】:2018-08-09 15:06:45
【问题描述】:
我需要根据标志(loginStatus)发送响应,但是,在此之前,会发送默认的 200 响应。如何拦截响应?
private void handlePost(HttpRequest request, HttpResponse response) {
response.setHeader("Content-Type", "text/html");
HttpEntity entity = ((HttpEntityEnclosingRequest)request).getEntity();
**// Handling the request here ......**
Handler mainHandler = new Handler(context.getMainLooper());
Runnable runnable = new Runnable() {
@Override
public void run() {
HttpEntity respEntity = new EntityTemplate(new ContentProducer() {
public void writeTo(final OutputStream outstream) throws IOException {
OutputStreamWriter writer = new OutputStreamWriter(outstream, "UTF-8");
final InputStream in = getContext().getAssets().open( "home.html" );
IOUtils.copy(in, writer);
writer.flush();
}
});
response.setHeader("Content-Type", "text/html");
response.setEntity(respEntity);
**//the loginStatus value is asynchronous so waiting for 5000**
if(loginStatus){
**// set status code 201**
response.setStatusCode(HttpStatus.SC_CREATED);
} else {
**// set status code 501**
response.setStatusCode(HttpStatus.SC_UNAUTHORIZED);
}
}
};
mainHandler.postDelayed(runnable, 5000);
}
【问题讨论】:
-
1) 不要自己编写网络层 2) 使用改造之类的库 3) 实现一个拦截器
标签: java android androidhttpclient