【问题标题】:Error while posting json data发布 json 数据时出错
【发布时间】:2012-03-02 19:30:57
【问题描述】:

我正在尝试发布 json 对象

{"venue":"places, US"}

使用下面的代码-

HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 30000);
HttpResponse response;
try {
     HttpPost post = new HttpPost(url);
     StringEntity se = new StringEntity(json.toString());
     se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
     post.setEntity(se);
     post.setHeader("Accept", "application/json");
     post.setHeader("Content-type", "application/json");
     response = client.execute(post);

} catch (Exception e) {
    Log.e("Client", "sendJson", e);
}

但是我收到服务器的错误响应-

{"description":"Invalid token character ',' in token \"json, application/json\"","errorCode":2000}

来自服务器的该错误的原因是什么。是因为服务器端的一些标头设置或者我上面粘贴的请求代码有问题。

编辑: 看起来这个错误是由于内容类型设置了 2 次。删除以下行后

se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));

错误消失了。

但是当我只删除下面的行而不是上面写的行时,它不会删除错误。

post.setHeader("Content-type", "application/json");

为什么只删除第一行有效,而当我删除第二个错误仍然存​​在,因为两者都在设置内容类型。

我还在其他项目中使用了包含两行代码的代码,并且它在它们中正常工作而没有任何错误。看起来像是服务器端的问题,服务器上的什么设置可能导致了这个问题。

谢谢

【问题讨论】:

    标签: android json http-headers


    【解决方案1】:

    尝试删除

    post.setHeader("Content-type", "application/json");
    

    线。看起来您添加了两次内容类型标头,而服务器对此有一些问题。

    【讨论】:

    • 感谢您的回复。删除 post.setHeader("Content-type", "application/json");没用。但是当我删除这一行时 se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));它起作用了,我得到了服务器的预期响应。这可能是什么原因?再次感谢您的帮助。
    【解决方案2】:

    在我看来,您设置了两次 Content-Type 标头。一次以字符串文字结尾,一次以HTTP.CONTENT_TYPE 开头。

    我在项目中解决此问题的方法是扩展 StringEntity 使其行为完全相同,除了将其 Content-Type 设置为 application/json。这样一来,我就不必再考虑了。

    【讨论】:

    • 感谢您的回复。当我删除线 se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));我没有从服务器收到错误。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2011-08-27
    • 2021-05-11
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多