Maneira correta de manipular o caractere E comercial no envio de cadeia JSON para o serviço da Web REST
ESTÁ BEM,
Estou usando oSystem.Runtime.Serialization
e aDataContractJsonSerialization
.
O problema é que na solicitação eu envio um valor de uma propriedade com o&
personagem. Dizer,AT&T
, e recebo uma resposta com erro:Invalid JSON Data
.
Eu pensei que o escape seria feito dentro da biblioteca, mas agora eu vejo que a serialização é deixada intocada pelo e comercial&
personagem.
Sim, para um formato JSON, isso é válido. Mas será um problema para minha solicitação POST, já que preciso enviar isso para um servidor que, se contiver um e comercial, responderá com erro, portanto, aqui estou.
HttpUtility.HtmlEncode
está noSystem.Web
biblioteca e então o caminho a percorrer é usandoUri.EscapeUriString
. Eu fiz isso para tentar, mas de qualquer maneira, e sem isso todas as solicitações estão funcionando bem, exceto que um e comercial está em um valor.
EDITAR:HttpUtility
classe é portada para o Windows Phone SDK, mas a maneira preferida para codificar uma string deve ser aindaUri.EscapeUriString
.
O primeiro pensamento foi sujar as mãos e começar a substituir o caractere especial que causaria um problema no servidor, mas, eu me pergunto, há outra solução que eu deveria fazer, que seria eficiente e "adequado"?
Eu deveria dizer que eu uso
// Convert the string into a byte array.
byte[] postBytes = Encoding.UTF8.GetBytes(data);
Para converter o JSON em umbyte[]
e escreva para oStream
. E,
request.ContentType = "application/x-www-form-urlencoded";
Enquanto oWebRequest.ContentType
.
Então, eu estou confuso por uma razão ou algo que eu sinto falta?
Obrigado.