В настоящее время я начал разработку переноса существующего приложения в приложение для магазина Windows.
Я использую Restsharp.portable
(от FubarDevelopment) и JSON.Net
для сериализации.
Я попытался выполнить вход в систему, создав объект запроса и добавив сериализованный объект в качестве requestBody. Однако этот запрос всегда терпит неудачу с HttpStatusCode 500
. Когда я смотрю в Fiddler, я вижу, что тело JSON все еще содержит косые черты. Когда я редактирую запрос вручную из Fiddler, удаляю обратную косую черту и выполняю его, запрос обрабатывается с помощью HttpStatusCode 200
.
Кто-нибудь знает, почему он отправляет мое тело запроса с косой чертой?
Это необработанное содержимое, как показано в Fiddler.
POST http://myhost/webmediation/service.php HTTP/1.1 Accept: application/json, text/json, text/x-json, text/javascript,application/xml, text/xml Content-Length: 102 Accept-Encoding: identity Cache-Control: no-cache Content-Type: application/json; charset=utf-8 User-Agent: NativeHost Host: 185.7.39.125 Connection: Keep-Alive Pragma: no-cache
"{\"params\":\"p_strLogin\":\"flow@mcs\"},\"jsonrpc\":\"2.0\",\"method\":\"initLogin\",\"id\":\"1\"}"
Это код, в котором я сериализую свой объект и добавляю его в запрос
var requestJSON = JsonConvert.SerializeObject(jsonRequestObject, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
var request = new RestRequest(resource, method);
request.AddParameter("application/json; charset=utf-8", requestJSON, ParameterType.RequestBody);
РЕШЕНО: как заявил Пранав Пател, объект был сериализован во второй раз. Реализация Restsharp.portable выполняет сериализацию JSON, когда вы добавляете объект в запрос. Поскольку я добавлял в запрос уже сериализованный объект, он экранировался.
Спасибо, Пранав!
{\"params\":\"p_strLogin\":\"flow@mcs\"}
- person nozzleman   schedule 07.09.2015