2013-08-06 30 views
0

当我调用JSONAPI函数库(http://mcjsonapi.com/)的函数'callmultiple'时,会引发UriFormatExeption。但是,当我打电话给'呼叫'功能时,所有的作品。下面我给你产生错误的代码:C#:调用JSONAPI函数时引发UriFormatException

JSONAPI j = new JSONAPI("minecraft20.omgserv.com", 40174, "username","password", "salt"); 
Dictionary<Object,Object> result = j.call("getServer",null); //all works 
Dictionary<Object,Object) result2 = j.callMultiple(new string[] {"getServer", "getOfflinePlayers"},null) //UriFormatException is thrown 

堆栈跟踪:

System.UriFormatException n'a pas été gérée 
    HResult=-2146233033 
    Message=invalid uri : the authority/host could not be parse 
    Source=System 
    Stacktrace: 
     at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind) 
     at System.Uri..ctor(String uriString) 
     at com.ramblingwood.minecraft.jsonapi.JSONAPI.makeURLMultiple(IEnumerable methods, IEnumerable args) 
     at com.ramblingwood.minecraft.jsonapi.JSONAPI.callMultiple(IEnumerable methods, IEnumerable args) 
     at MineControl.Server.Server.UpdateServer() dans c:\Users\frank\Documents\GitHub\MineControl\MineControl\Server\Server.cs:ligne 102 
     at MineControl.Server.Server..ctor(String host, Int32 port, String id, String password, String salt) dans c:\Users\frank\Documents\GitHub\MineControl\MineControl\Server\Server.cs:ligne 56 
     at MineControl.App..ctor() dans c:\Users\frank\Documents\GitHub\MineControl\MineControl\App.xaml.cs:ligne 26 
     at MineControl.App.Main() dans c:\Users\frank\Documents\GitHub\MineControl\MineControl\obj\Debug\App.g.cs:ligne 0 
     at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException: 

我不明白为什么这个代码是不好的,所以请大家帮帮我。 感谢您

+0

什么是异常消息和堆栈跟踪? – SLaks

+0

异常消息:无效的uri:权限/主机无法解析 –

+0

Stacktrace:在System.Uri.CreateThis(字符串uri,布尔dontEscape,UriKind uriKind) –

回答

1

我不知道这是不是问题,但文件说callMultiple会抛出一个异常,如果methods数组的长度和args数组的长度是不同的。

您有:

Dictionary<Object,Object) result2 = 
    j.callMultiple(new string[] {"getServer", "getOfflinePlayers"}, null); 

这很可能是你需要写:

Dictionary<Object,Object) result2 = 
    j.callMultiple(new string[] {"getServer", "getOfflinePlayers"}, 
        new string[] {null, null}); 

这就是我想尝试,反正。

+0

不,我写这个和其他想法有同样的例外吗? –

+0

@ fr4nky890:那是我唯一的想法。抱歉。 –