window下使用telnet请求dubbo接口:
1、windows添加telnet
控制面板——》程序和功能——》打开或关闭windows功能——》安装Telnet客户端
2、cmd打开Windows控制台;
3、使用telnet命令打开控制台:telnet ip 端口号 例如:telnet IP 端口号
4、打开telnet控制台后,回车,出现dubbo>,
5、使用invoke命令注入,命令:服务名.方法名(参数) ,回车后即可请求dubbo接口
如果注入的是json
那就直接传入json串就ok了,如果是基础数据类型,也可以分别对应参数直接传
invoke XxxService.xxxMethod({“prop”: “value”}, 1, “1”)
如果注入的是对象(com.cn.Test。具体的方法名:test(List tList))
对象,我们也是按照json的格式传,只不过在每个对象后都需要指定具体的这个对象具体所属的类型。
invoke XxxService.xxxMethod([{“key”:“11”,“merchantId”:“888”,“skuId”:“111”,“class”:“com.cn.Test”}])
python使用telnet请求dubbo接口
telnetlib为python自带模块,无需安装,可直接使用,具体代码如下
import telnetlib, json
class Dubbo(telnetlib.Telnet):
prompt = 'dubbo>'
coding = 'gbk'
def __init__(self, host=None, port=0):
super().__init__(host, port)
self.write(b"\n")
def command(self, flag, str_=""):
data = self.read_until(flag.encode()) #输入 dubbo>
self.write(str_.encode('gbk') + b"\n") #输入 invoke 服务名.方法名(参数) 加回车
return data
def invoke(self, service_name, method_name, arg):
command_str = "invoke {0}.{1}({2})".format(service_name, method_name, arg) #组装invoke 服务名.方法名(参数)
print(command_str)
self.command(Dubbo.prompt, command_str)
data = self.command(Dubbo.prompt, "\n")
print(data)
data = json.loads(data.decode(Dubbo.coding, errors='ignore').split('\n')[0].strip())
return data
if __name__ == '__main__':
conn = Dubbo('IP', 端口号) #建立telnet连接
name = "双溪漂流旅游旗舰店"
result = conn.invoke(
"服务名",
"方法名",
{'appKey': '21330348',
'nick': name,
'deleted': 'F'
}
)
print('*****************以下是接口返回结果*****************')
print(result)