Проблемы с отправкой данных с испанскими символами из приложения Android, но не из почтальона в спокойный веб-сервис - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть веб-сервис 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, в противном случае все идеально.

1 Ответ

0 голосов
/ 28 сентября 2018

попробуйте это:

httpPost.setHeader("content-type", "application/json;charset=utf-8" );

и

strHttpResponse = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...