【问题标题】:Sending JSON over HTTP POST with Java使用 Java 通过 HTTP POST 发送 JSON
【发布时间】:2015-06-06 15:42:12
【问题描述】:

发件人

StringBuilder builder = new StringBuilder();
HttpParams httpParameters=new BasicHttpParams();
HttpResponse response;
HttpPost httpPost = new HttpPost(address);
StringEntity entity = new StringEntity(JSON.toString(), HTTP.UTF_8);
entity.setContentType("application/json");
httpPost.setEntity(entity);
HttpClient client = new DefaultHttpClient(httpParameters);
response = client.execute(httpPost);

接收者

StringBuffer jb = new StringBuffer();
String line = null;
BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null)
    jb.append(line);

json_in = org.json.HTTP.toJSONObject(jb.toString());

JSONObject js=new JSONObject((String)json_in.get("Method"));

Map<String, String> dict = new HashMap<>();
Iterator it=js.keys();
while(it.hasNext()){
     String key=(String)it.next();
     dict.put(key,(String) js.get(key));
}

您好,我正在尝试使用 http post 传递 JSON,错误来自行 JSONObject js=new JSONObject((String)json_in.get("Method"));

org.json.JSONException: Unterminated string at 314 [character 315 line 1]

如何解决? 谢谢。

编辑:

此请求正常运行

curl http://localhost:8080/ --data "{'a':'b','image':'
/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMraHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MSA2NC4xNDA5NDksIDIwMTAvMTIvMDctMTA6NTc6MDEgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUuMSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVCODRFNkEyRDRBMjExRTBCMEFCRUMwRkU5QUY1ODY1IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVCODRFNkEzRDRBMjExRTBCMEFCRUMwRkU5QUY1ODY1Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RUI4NEU2QTBENEEyMTFFMEIwQUJFQzBGRTlBRjU4NjUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUI4NEU2QTFENEEyMTFFMEIwQUJFQzBGRTlBRjU4NjUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAmQWRvYmUAZMAAAAABAwAVBAMGCg0AAAUeAAAFbAAABdgAAAZI/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDg8QDw4MExMUFBMTHBsbGxwfHx8fHx8fHx8fAQcHBw0MDRgQEBgaFREVGh8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx//wgARCAASABIDAREAAhEBAxEB/8QAoQABAQEBAAAAAAAAAAAAAAAABgMEBQEAAwEBAAAAAAAAAAAAAAAAAgMEAQAQAAAFAwUAAAAAAAAAAAAAAAABAgMEIEEUETI0BRURAAECBAQHAAAAAAAAAAAAAAEAAiFRMgMxQRIz8BGBgkODNBIBAAAAAAAAAAAAAAAAAAAAMBMAAgEDBAIDAQAAAAAAAAAAAAER8CExEGGR0UFRcaGxwf/aAAwDAQACEQMRAAAB5ds7BLDRjahSZDDDBQdmodmJf//aAAgBAQABBQJa5BusxTZ63IlAobhqeTI8jGUD3ucYf//aAAgBAgABBQLSi4IXH//aAAgBAwABBQKi1H//2gAIAQICBj8CH//aAAgBAwIGPwIf/9oACAEBAQY/Ank3HVHMzQuvsPv33GILjATW875plOMyVbaHnXqieeUV6tCdTiacEKse1eHZ46r/2gAIAQEDAT8he9t3d5uN+ujrvxliEj61UxYGkms+2R8plPl+CfRtL+xTRfwdk+eN9B//2gAIAQIDAT8hQbuR+iEkezAQ5yf/2gAIAQMDAT8hbPBIydDPB0f/2gAMAwEAAhEDEQAAECKKez//2gAIAQEDAT8QcqibGJIIOgtEmhHLKXOStTftncTmtpthr9D8NlUyVmt3CFB2lWCkm/ict56Xzov/2gAIAQIDAT8QtIkinCI+g6SRM2tHRCGDODJT0f/aAAgBAwMBPxC4JRKCX0SkbRJ/DN4HjSOB/9k='}"

【问题讨论】:

  • 你可以通过修复你的json来修复它。
  • 检查 JSON 字符串
  • 可能是因为它包含base64编码的字符串?
  • 与 JavaScript 不那么严格的对象表示法不同,JSON 不允许您在单引号和双引号之间进行选择。 JSON 中只允许使用双引号来分隔字符串值。

标签: java json


【解决方案1】:

根据Wormbo 在评论中所说,您的 JSON 应该如下所示:

{"a":"b","image":"/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMraHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MSA2NC4xNDA5NDksIDIwMTAvMTIvMDctMTA6NTc6MDEgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUuMSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVCODRFNkEyRDRBMjExRTBCMEFCRUMwRkU5QUY1ODY1IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVCODRFNkEzRDRBMjExRTBCMEFCRUMwRkU5QUY1ODY1Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RUI4NEU2QTBENEEyMTFFMEIwQUJFQzBGRTlBRjU4NjUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUI4NEU2QTFENEEyMTFFMEIwQUJFQzBGRTlBRjU4NjUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAmQWRvYmUAZMAAAAABAwAVBAMGCg0AAAUeAAAFbAAABdgAAAZI/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDg8QDw4MExMUFBMTHBsbGxwfHx8fHx8fHx8fAQcHBw0MDRgQEBgaFREVGh8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx//wgARCAASABIDAREAAhEBAxEB/8QAoQABAQEBAAAAAAAAAAAAAAAABgMEBQEAAwEBAAAAAAAAAAAAAAAAAgMEAQAQAAAFAwUAAAAAAAAAAAAAAAABAgMEIEEUETI0BRURAAECBAQHAAAAAAAAAAAAAAEAAiFRMgMxQRIz8BGBgkODNBIBAAAAAAAAAAAAAAAAAAAAMBMAAgEDBAIDAQAAAAAAAAAAAAER8CExEGGR0UFRcaGxwf/aAAwDAQACEQMRAAAB5ds7BLDRjahSZDDDBQdmodmJf//aAAgBAQABBQJa5BusxTZ63IlAobhqeTI8jGUD3ucYf//aAAgBAgABBQLSi4IXH//aAAgBAwABBQKi1H//2gAIAQICBj8CH//aAAgBAwIGPwIf/9oACAEBAQY/Ank3HVHMzQuvsPv33GILjATW875plOMyVbaHnXqieeUV6tCdTiacEKse1eHZ46r/2gAIAQEDAT8he9t3d5uN+ujrvxliEj61UxYGkms+2R8plPl+CfRtL+xTRfwdk+eN9B//2gAIAQIDAT8hQbuR+iEkezAQ5yf/2gAIAQMDAT8hbPBIydDPB0f/2gAMAwEAAhEDEQAAECKKez//2gAIAQEDAT8QcqibGJIIOgtEmhHLKXOStTftncTmtpthr9D8NlUyVmt3CFB2lWCkm/ict56Xzov/2gAIAQIDAT8QtIkinCI+g6SRM2tHRCGDODJT0f/aAAgBAwMBPxC4JRKCX0SkbRJ/DN4HjSOB/9k="}

我使用漂亮打印的格式化程序 here 检查了 JSON,它在您的应用程序中显示了相同的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 2010-11-11
    • 2017-10-12
    • 2013-02-05
    • 1970-01-01
    相关资源
    最近更新 更多