关于这个话题,网上也是有不少了,不过只从iOS需要IL2CPP后,那些方法基本上都没用了,因为C#原本的办法是通过生成代理类来进行访问,那个代理类都是使用C#反射,自然没法用,如果知道原理的话其实都很容易自己去实现,不过哪有那么多时间去学习那个玩意的原理,省下来的时间购泡几个妹纸了
正题开始
使用 http://easywsdl.com/WsdlGenerator 这个玩意就可以很容易生成各个客户端需要的代码,目前来说我们只需要安卓和iOS就够了。需要 翻-墙 才能进去,我是用的Goggle账号登录的,总之我生成的是iOS的,生成的是OC语言,其实OC很容易和Unity交互
static char resultStr[1024];
extern "C" {
const char* LoginWeb(const char* s_user,
const char* s_pw);
}
const char* LoginWeb(const char* s_user,
const char* s_pw){
memset(resultStr, 0, sizeof(resultStr));
NSString* user=[NSString stringWithUTF8String:s_user];
NSString* pw=[NSString stringWithUTF8String:s_pw];
NSString* url=@"http://你的地址WS/WSAccount.asmx";
NSError* error=nil;
MHKWSAccountSoap12* service = [[MHKWSAccountSoap12 alloc] initWithUrl: url ];
NSString* res = [service Login:user userPass:pw __error: &error];
NSLog(@"LoginWeb user:%@", user);
if(error!=nil)
{
//error occured
NSLog(@"LoginWeb error:%@",error);
}else{
if(res!=nil){
const char* s = [res UTF8String];
strcpy(resultStr, s);
}
}
return resultStr;
}
Unity里使用
[DllImport(“__Internal”, CharSet = CharSet.Auto)]public static extern IntPtr LoginWeb(string s_user, string s_pw);
具体的函数是根据你的服务来生成,生成的包里面也有文档,很方便,安卓也是同理,而且生成的包里就有jar包,可以直接使用
以上代码可能会有内存泄漏,因为我不是很懂OC代码