2013-08-06 62 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:那是我唯一的想法。抱歉。 –