当前位置: 首页 > 知识库问答 >
问题:

从android应用程序(而不是从postman)向restful web服务发送带有西班牙语字符的数据时出现问题

段干飞翮
2023-03-14

我有一个web服务RESTful,它保存到数据库中。我用JSON传递数据。如果我从邮递员那里传递一个JSON,一切都好。如果我从android应用程序传递数据(JSON),如果存在诸如“ó,ñ等”的西班牙语字符,服务器将无法保存到数据库。

为什么来自postman yes和android app not?。

我尝试添加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());

如果我在"httpClient.execute(httpPost);"之前调试httpPost,httpPost是可以的,里面有数据 (ó, ñ 等等),但是当它到达c#后端时,"mensaje"为空:

public HttpResponseMessage PostMensaje(Mensajeria mensaje)
{
        if (mensaje == null)
            return 
Request.CreateResponse(HttpStatusCode.InternalServerError, "El mensaje no 
puede llegar al servidor");

但如果android应用程序中的httpPost没有任何西班牙语字符,一切都很好,并且在后端“Mensajeria mensaje”“mensaje”不是空的。为什么null只用于携带西班牙语字符?。

有了邮递员,无论有没有西班牙字符,一切都很好。

我必须说,我最后一次尝试是添加web。在web服务中配置。净值:

  <globalization
      fileEncoding="ISO-8859-9" 
      requestEncoding="ISO-8859-9" 
     responseEncoding="ISO-8859-9"


  />

但是当json到达web服务“mensaje”时,它是空的(但它来自android代码)。如果JSON在.net中带有“ó,ñ等”,那么mensaje是空的,否则,一切都是完美的。

  public HttpResponseMessage PostMensaje(Mensajeria mensaje)
    {

共有1个答案

关冠宇
2023-03-14

试试这个:

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

strHttpResponse = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
 类似资料:
  • 我使用HtmlCleaner库来解析/转换java中的HTML文件。 似乎无法处理像“Áák NUÍíNU NU NU NU NU”这样的西班牙语字符 我可以在HtmlCleaner中设置任何属性来处理此解决方案或任何其他解决方案吗?这是我用来调用它的代码:

  • 我正在尝试从Android向我的php服务器提交数据。然而,所有的答案似乎都使用了不推荐使用的ApacheHTTP库。我不想用它,当我试着用的时候,它不起作用。 现在它似乎什么也没做。它似乎连接到web服务器,但服务器不写入任何数据。如果我只是用浏览器访问url,它会写入一个文件。 php代码是 然后在Android studio中,我会在按下按钮后放入所有代码

  • 我有一个android 7设备,我正在上面开发一个应用程序。此外,我有一个无线电波扫描仪,它可以作为蓝牙键盘(它扫描标签,并通过蓝牙传输数据,如果用户打开了某个写入应用程序,并且与扫描仪配对,它应该在该应用程序中写入数据)。 在android 7设备上的应用程序中,我有一个输入字段,我希望扫描仪在扫描内容时将其写入。最好的情况是扫描仪可以正常工作,无需我编写任何代码,比如我的Galaxy s10手

  • 我使用Android Studio和这个库;https://github.com/yesidlazaro/GmailBackground . 我正在尝试从我的android应用程序发送电子邮件。但是每当我尝试从Gmail帐户发送电子邮件时,它都不起作用。因为谷歌将我的应用程序固定为“不太安全的应用程序”并阻止它。 我不得不从gmail的安全设置中允许不太安全的应用程序。但我不想这样做。我如何解决这

  • 对于如何将一个< code>json对象从我的android应用程序发送到数据库,我有点不知所措 由于我是新手,我不太确定我出了什么问题,我已经从中提取了数据,并且我不知道如何将对象发布到我们的服务器。 任何建议将不胜感激

  • 我们如何才能从android应用直接发送一个图像到whatsapp?我试着用 以上代码打开WhatsApp的发送窗口。有没有其他的方法,让图片将直接发送而不打开什么app窗口?