У меня есть веб-сервис RESTful, который он сохраняет в базе данных.Я передаю данные с помощью JSON.Если я передаю JSON от POSTMAN, все в порядке.Если я передаю данные (JSON) из приложения для Android, сервер не может сохранить их в базе данных, если есть иероглифы типа «ó, ñ и т. Д.».
Почему от почтальона да и от androidприложение не?.
Я пытаюсь добавить ISO-8859-1, но это не работает.Где ошибка?Sql сервер ?, Android-приложение ?, IIS ?.Если данные не содержат испанские символы, все в порядке, с испанскими символами это не работает.
Код в приложении для Android выглядит так:
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost;
httpPost = new HttpPost("http://"...
httpPost.setHeader("content-type", "application/json" );
httpPost.setHeader("charset", "ISO-8859-1");
JSONObject jSONObject = new JSONObject();
try
{
jSONObject.put("Mensaje", params[0].mensaje);
jSONObject.put("IdUsuarioOrigen", params[0].idUsuarioOrigen);
jSONObject.put("IdUsuarioDestino", params[0].idUsuarioDestino);
StringEntity stringEntity = new StringEntity(jSONObject.toString());
stringEntity.setContentType("application/json");
stringEntity.setContentEncoding("ISO-8859-1");
httpPost.setEntity(stringEntity);
HttpResponse httpResponse = httpClient.execute(httpPost);
strHttpResponse = EntityUtils.toString(httpResponse.getEntity());
РЕДАКТИРОВАТЬ:::::::::::::::::::::::::::::::::::: *::::::
Я отлаживаю уже несколько дней.Дело в следующем:
Код в приложении для Android:
... httpPost.setHeader ("content-type", "application / json");httpPost.setHeader ("charset", "ISO-8859-9");
JSONObject jSONObject = new JSONObject();
try
{
jSONObject.put("Mensaje", params[0].mensaje);
jSONObject.put("IdUsuarioOrigen", params[0].idUsuarioOrigen);
jSONObject.put("IdUsuarioDestino",
params[0].idUsuarioDestino);
StringEntity stringEntity = new
StringEntity(jSONObject.toString());
stringEntity.setContentType("application/json");
stringEntity.setContentEncoding("ISO-8859-9");
httpPost.setEntity(stringEntity);
HttpResponse httpResponse = httpClient.execute(httpPost);
strHttpResponse =
EntityUtils.toString(httpResponse.getEntity());
И если я отлаживаю httpPost перед "httpClient.execute (httpPost);"httpPost в порядке, содержит данные внутри (ó, ñ и т. д.), но когда он прибывает в бэкэнд c #, «mensaje» имеет значение null:
public HttpResponseMessage PostMensaje(Mensajeria mensaje)
{
if (mensaje == null)
return
Request.CreateResponse(HttpStatusCode.InternalServerError, "El mensaje no
puede llegar al servidor");
Но если httpPost в приложении для Android не 'у него нет никаких испанских символов, все хорошо, и в конце "Mensajeria mensaje" "mensaje" не является нулевым.Почему null только для переноса испанских символов?.
С почтальоном все хорошо, с испанскими символами или без них.
Должен сказать, моя последняя попытка была добавить web.configв веб-службах .net:
<globalization
fileEncoding="ISO-8859-9"
requestEncoding="ISO-8859-9"
responseEncoding="ISO-8859-9"
/>
Но json, когда он достигает веб-службы, "mensaje" имеет значение null (но он хорошо проявился в коде Android).Если JSON вышел с «,, ñ и т. Д.» Mensaje в .net, то значение NULL, в противном случае все идеально.