我正在使用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()
。
那么我该怎么做才能发送这个请求呢?``
答案 0 :(得分:0)
我建议你研究一下Kodi addon unicode paths 遵循该指南将帮助您防止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编码的字符串,我们将其解码为unicode。
浏览对话框
dialog = xbmcgui.Dialog()
directory = dialog.browse(0, 'Title' , 'pictures').decode('utf-8')
dialog.browse()返回一个UTF-8编码的字符串,其中可能包含一些非拉丁字符。因此将其解码为unicode!