У меня есть C # REST Webservice, предоставляющий следующий метод:
[OperationContract]
[WebGet
(
BodyStyle = WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "/Files?id={ID}"
)
]
Stream GetFilesForID(string ID);
Этот метод извлекает информацию из базы данных на основе идентификатора, указанного пользователем.Этот идентификатор может содержать китайские иероглифы.
Моя реализация метода:
public Stream GetFilesForID(string ID)
{
ID = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(ID));
// and connect to database and
// stream back the list.
}
"ID" по-прежнему не содержит китайских символов.Это выглядит так: ã³ãã«-太é
У меня есть клиентский код, который написан на C ++ и вызывает этот метод REST Webservice с использованием библиотеки winHTTP.Я также проверил это, используя fiddler, но я получаю тот же результат, т.е. китайские иероглифы отображаются как странные символы.
Если у меня есть метод «POST» с телом запроса, содержащим символы Юникода, мой метод веб-сервиса получает тело запроса без каких-либо проблем.Мне даже не нужно делать ничего подобного: Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(requestBody));
Что мне здесь не хватает?Нужно ли что-то еще делать перед отправкой запроса HTTP GET?