0

我正在使用Kodi API来通过 asp.net 控制我的 htpc。特别是名为“Playlist.Add”的功能。我发送的Json是这样的:

{"jsonrpc":"2.0","method":"Playlist.Insert","params":{"playlistid":0,"position":0,"item":{"file":"smb://server/Ferry Corsten/Beautiful/Ferry Corsten - Beautiful (Extended).mp3"}},"id":1}

这工作正常。但是当字符串中没有这样的英文字符时:

{"jsonrpc":"2.0","method":"Playlist.Insert","params":{"playlistid":0,"position":0,"item":{"file":"smb://server/01-Zum Geburtstag viel Glück.mp3"}},"id":1}

它只是抛出一个“RequestCanceled”异常。

我的 C# 源代码是这样的:

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(_url);
                string authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(_username + ":" + _password));
                webRequest.Headers["Authorization"] = "Basic " + authInfo;

                webRequest.Method = "POST";
                webRequest.UserAgent = "KodiControl";
                webRequest.ContentType = "application/json";

                webRequest.ContentLength = json.Length;
                using (var streamWriter = new StreamWriter(webRequest.GetRequestStream()))
                {
                    streamWriter.Write(json);
                    streamWriter.Flush();
                    streamWriter.Close();
                }

异常被抛出streamWriter.Flush()。那么我该怎么做才能发送这个请求呢?``

4

1 回答 1

0

我建议您查看Kodi 插件 unicode 路径 遵循该指南将帮助您防止 Kodi 中非拉丁字符的常见问题。

Python 仅在内部使用 unicode 字符串,在输出时转换为特定编码。(或输入)”。要使字符串文字默认为 unicode,请添加

from __future__ import unicode_literals

插件路径

path = addon.getAddonInfo('path').decode('utf-8')

.decode('utf-8')告诉 kodi 使用utf-8. Kodi 的 getAddonInfo 返回一个 UTF-8 编码的字符串,我们将其解码为 un​​icode。

浏览对话框

dialog = xbmcgui.Dialog()
directory = dialog.browse(0, 'Title' , 'pictures').decode('utf-8')

dialog.browse() 返回一个 UTF-8 编码的字符串,其中可能包含一些非拉丁字符。因此将其解码为 un​​icode!

于 2016-11-15T20:41:26.457 回答