From 63a583a67ee7800afcd87c48f8c9ffa269a6ebf7 Mon Sep 17 00:00:00 2001 From: qixiaobo Date: Wed, 31 Jul 2019 20:48:46 +0800 Subject: [PATCH] We need dubbo-proxy can handle with form post or queryString #15 https://github.com/apache/dubbo-proxy/issues/15 --- .../proxy/server/HttpProcessHandler.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/dubbo/proxy/server/HttpProcessHandler.java b/src/main/java/org/apache/dubbo/proxy/server/HttpProcessHandler.java index 4e1c254..b370425 100644 --- a/src/main/java/org/apache/dubbo/proxy/server/HttpProcessHandler.java +++ b/src/main/java/org/apache/dubbo/proxy/server/HttpProcessHandler.java @@ -1,6 +1,8 @@ package org.apache.dubbo.proxy.server; import com.alibaba.fastjson.JSON; + +import com.google.common.base.Splitter; import org.apache.dubbo.proxy.dao.ServiceDefinition; import org.apache.dubbo.proxy.dao.ServiceMapping; import org.apache.dubbo.proxy.metadata.MetadataCollector; @@ -30,6 +32,7 @@ public class HttpProcessHandler extends SimpleChannelInboundHandler> params = queryStringDecoder.parameters(); if (params.containsKey("group")) { service = params.get("group").get(0) + "/" + service; @@ -65,13 +70,28 @@ protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest msg) { if (params.containsKey("version")) { service = service + ":" + params.get("version").get(0); } + if (params.containsKey("methodName")) { + methodName = params.get("methodName").get(0); + } + if (params.containsKey("paramTypes")) { + @SuppressWarnings("UnstableApiUsage") List paramTypesList = queryStringSplitter.splitToList(params.get("paramTypes").get(0)); + if (!paramTypesList.isEmpty()) { + paramTypes = paramTypesList.toArray(new String[]{}); + } + } ByteBuf raw = msg.content(); String info = raw.toString(CharsetUtil.UTF_8); ServiceDefinition serviceDefinition = JSON.parseObject(info, ServiceDefinition.class); serviceDefinition.setServiceID(service); serviceDefinition.setApplication(application); + if (methodName != null && serviceDefinition.getMethodName() == null) { + serviceDefinition.setMethodName(methodName); + } + if (paramTypes != null && serviceDefinition.getParamTypes() == null) { + serviceDefinition.setParamTypes(paramTypes); + } doRequest(ctx, serviceDefinition, msg); - } else { + } else { //TODO error handle } }