我正在构建API,当我发送这样的请求时:
POST http://myserver.dev
{
"id": "1",
"string1": "hello",
"string2": "world"
}
一切按预期运行,使用curl
和Postman进行测试。但是,使用我的Android代码,请求失败:
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("id", "1");
jsonObject.put("string1", "hello");
jsonObject.put("string2", "world");
}
catch (JSONException e)
{
e.printStackTrace();
}
String jsonString = jsonObject.toString();
服务器给我这个错误:
JSON::ParserError (757: unexpected token at '"{\"id\":\"1\",\"string1\":\"hello\",\"string2\":\"world\"}"'):
好像这个jsonObject没有给我预期的json字符串。任何想法在这里发生了什么?
来自logcat的完整HTTP请求如下:
04-26 15:23:56.468 21013-21669/com.johncorser.s D/Retrofit﹕ ---> HTTP POST http://api.s.com/games
04-26 15:23:56.469 21013-21669/com.johncorser.s D/Retrofit﹕ X-Authorization: 10155399143045080
04-26 15:23:56.469 21013-21669/com.johncorser.s D/Retrofit﹕ Content-Type: application/json; charset=UTF-8
04-26 15:23:56.469 21013-21669/com.johncorser.s D/Retrofit﹕ Content-Length: 95
04-26 15:23:56.469 21013-21669/com.johncorser.s D/Retrofit﹕ {"nameValuePairs":{"id":"1","string1":"hello","string2":"world"}}
04-26 15:23:56.469 21013-21669/com.johncorser.s D/Retrofit﹕ ---> END HTTP (95-byte body)
从服务器日志:
2015-04-26T19:26:39.371386+00:00 app[web.1]: Parameters: {"_json"=>"{\"id\":\"1\",\"string1\":\"hello\",\"string2\":\"world\"}", "game"=>{}}
JSON::ParserError (757: unexpected token at '"{\"id\":\"1\",\"string1\":\"hello\",\"string2\":\"world\"}"'):
答案 0 :(得分:0)
这最终是Retrofit在发布之前序列化对象的结果。
我最终从使用JSONObject
切换到HashMap<String, String>
而没有调用任何.toString()
方法,Retrofit负责其余的工作。