Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SyntaxError:Json.parse:数据GWT意外结束_Java_Json_Gwt_Spring Boot_Gwt 2.5 - Fatal编程技术网

Java SyntaxError:Json.parse:数据GWT意外结束

Java SyntaxError:Json.parse:数据GWT意外结束,java,json,gwt,spring-boot,gwt-2.5,Java,Json,Gwt,Spring Boot,Gwt 2.5,当我使用GWT向API发出rest请求时,我在客户端得到了“Json.parse:意外的数据结尾” 客户端代码: private void executeUnAccountedTransactionByService(String requestJson) { String requestData = "request=" + URL.encodeQueryString(requestJson); RequestBuilder builder = new

当我使用GWT向API发出rest请求时,我在客户端得到了“Json.parse:意外的数据结尾”

客户端代码:

private void executeUnAccountedTransactionByService(String requestJson)
    {
        String requestData = "request=" + URL.encodeQueryString(requestJson);

        RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, URL.encode(postPaymentUrl));

        builder.setHeader("Content-Type","application/x-www-form-urlencoded");
        builder.setHeader("Accept","application/json") ;
        try  {

            builder.sendRequest(requestData, new RequestCallback()  {

                @Override
                public void onResponseReceived(Request request, Response response)  {

                    JSONValue jsonValue = JSONParser.parseStrict(response.getText());
                    JSONObject responseObject = jsonValue.isObject();
                    //my logic
                }

                @Override
                public void onError(Request request, Throwable exception) {
                }
            });
        } 
        catch (RequestException e)  {
        }
    }
我的API代码:

    @RequestMapping(value = "/url",
                    method = RequestMethod.POST)
    public @ResponseBody ResponseEntity<?> processPayment(
                                            @RequestParam("request") String payRequestJson,
                                            HttpServletRequest servletRequest) {

        PutUnAccountedTransaction unAccountedTransaction = null ;
        try {
            LOGGER.info("request recieved unaccounted transaction : " +
                    payRequestJson);
             unAccountedTransaction = objectMapper.readValue(payRequestJson, PutUnAccountedTransaction.class) ;
       } catch (Exception e) {
          //currenlty handling success case only.
            return ResponseEntity.ok(unAccountedTransaction);
       }
    return ResponseEntity.ok(unAccountedTransaction);
    }
请求:
{“applicationIdentifierIC”:“jh2b32vy”,“amount”:“100”,“authCode”:“HHBJH”,“orderNumber”:“jhsbhjb”,“dateTimeInUTC”:“03/01/2017 07:20:57”,“gatewayName”:“gatewayName”,“transactionReference”:“asdhgwvg”,“DealId”:“bhjhahdbj”,“cardType”:“VISA”,“TermalID”:“JHBJJJ”,“userReference”:“bjhbjh”,“paymentType”:“EMV\U芯片”,“expMonth”:”:“09”、“expYear”:“19”、“卡号”:“1111”}

我得到了预期的回应

我认为问题是由于“接受”标题。我尝试了“/”、“应用程序/x-www-form-urlencoded”,但我得到了相同的错误

我在《邮递员》中得到的回复是:

{
  "gatewayName": "credit-call",
  "dealerId": 1278,
  "terminalId": "jjhbjhbhjbj",
  "amount": 100,
  "orderNumber": "jhsbhjb",
  "cardNumber": "9111",
  "cardType": "Disc",
  "dateTimeInUTC": "03/01/2017 07:20:57",
  "paymentType": "EMV_CHIP",
  "authCode": "hhbjhbjh",
  "transactionReference": "asdhgwvg",
  "userReference": "bjhbjh",
  "applicationIdentiferICC": "jh2b32vy",
  "expMonth": 9,
  "expYear": 12,
  "dateTimeInPST": null,
  "inoiceGuid": null,
  "description": null
}
在浏览器中检查客户端后收到的响应标头

Server: Apache-Coyote/1.1
X-Application-Context: postpayment:devvm
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Wed, 01 Mar 2017 15:28:17 GMT
我使用的是GWT2.5版本

我遇到以下错误:

java.lang.IllegalArgumentException: empty argument
    at com.google.gwt.json.client.JSONParser.parse(JSONParser.java:210)
    at com.google.gwt.json.client.JSONParser.parseStrict(JSONParser.java:87)
排队

 JSONValue jsonValue = JSONParser.parseStrict(response.getText())

检查您的响应JSON并确认其有效性。错误表明请求正常,但当响应JSON字符串到达浏览器时,
JSONParser.parseStrict(response.getText())
无法解析它,因为它不是合法的JSON


如果您需要更多帮助,请在此处共享响应JSON和响应标题。

看起来很好…您可以添加准确的错误消息吗?看起来不太正确,但具有堆栈跟踪和准确的错误可能会有所帮助。添加了我正在获取的错误和获取该错误的行。错误消息表示没有JSON存在-您非常确定
response.getText()
是您在上面发布的JSON吗?因为parseStrict不会用非空字符串引发该异常…response.getText()是空的。我发布的响应是我在邮递员中得到的。我在得到response.getText()空的。但是我不理解curl和postman的相同请求。好吧,那就是你的问题的根源。你的问题需要更多的细节才能回答这个问题,但至少从浏览器的控制台和调试器中的网络选项卡开始,看看打电话时是否有错误,以及标题是什么发送以查看您是否做错了。但是,是的,空字符串不是有效的json。
 JSONValue jsonValue = JSONParser.parseStrict(response.getText())