spring cloud專案,使用的是gateway網關,通過 方法呼叫gateway轉發的介面無法收到回傳的資訊,java后臺資料都正常處理。直接呼叫目標介面,可以收到回傳資訊,請問這是什么原因?gateway的回傳資訊是怎么處理的?
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpResponse originalResponse = exchange.getResponse();
DataBufferFactory bufferFactory = originalResponse.bufferFactory();
ServerHttpResponseDecorator decoratedResponse = new ServerHttpResponseDecorator(originalResponse) {
@Override
public Mono<Void> writeWith(Publisher<? extends DataBuffer> body) {
if (body instanceof Flux) {
Flux<? extends DataBuffer> fluxBody = (Flux<? extends DataBuffer>) body;
return super.writeWith(fluxBody.map(dataBuffer -> {
// probably should reuse buffers
byte[] content = new byte[dataBuffer.readableByteCount()];
dataBuffer.read(content);
//釋放掉記憶體
DataBufferUtils.release(dataBuffer);
String s = new String(content, Charset.forName("UTF-8"));
//TODO,s就是response的值
byte[] uppedContent = new String(content, Charset.forName("UTF-8")).getBytes();
return bufferFactory.wrap(uppedContent);
}));
}
// if body is not a flux. never got there.
return super.writeWith(body);
}
};
// replace response with decorator
return chain.filter(exchange.mutate().response(decoratedResponse).build());
}
查看回傳資訊,發現contentType是null?
uj5u.com熱心網友回復:
呼叫方法是C# 的 GetRequestStream()方法uj5u.com熱心網友回復:
有大神幫一下嗎?uj5u.com熱心網友回復:
先去掉你的filter 配置成直通,測驗看看。應該是你的filter有問題,增強日志,記錄下來分析分析uj5u.com熱心網友回復:
查到原因了,請求里面帶了Expect=100-continue,導致請求不回傳,去掉之后就可以了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/42905.html
標籤:Java EE
上一篇:不想敲代碼的程式猿
下一篇:支付寶當面付總是報錯java.lang.ClassNotFoundException: com.alipay.demo.trade.service.Alipay
