SyntaxError: Неожиданный токен% в JSON в позиции 0 при использовании залпа - PullRequest
0 голосов
/ 24 сентября 2018

Я получаю следующую ошибку на Node.Js при обработке сообщения (с полями json) через залп:

SyntaxError: Unexpected token % in JSON at position 0
at JSON.parse (<anonymous>)

При работе с браузером Chrome все в порядке (и ошибки не возникает).

Код Node.JS выглядит следующим образом:

var express    = require('express');
var app        = express();
var bodyParser = require("body-parser");
const log      = require('simple-node-logger').createSimpleLogger();

var server_port = 32082
var server_ip_address =  ''

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended : true}));


var server = app.listen(server_port, server_ip_address, function () {

  var host = server.address().address
  var port = server.address().port
  log.info('App listening at ', host, ' ', port);
  console.log( "Listening on " + server_ip_address + ", port " + server_port );

})


app.get('/', function (req, res) {

   log.info("Request login page");
    res.sendFile('login.html', {root: __dirname })
})

app.get('/css/style.css', function (req, res) {
      log.info("Request style.css");
      res.sendFile('/css/style.css', {root: __dirname })
})

app.get('/js/login.js', function (req, res) {
      log.info("Request login.js");
      res.sendFile('/js/login.js', {root: __dirname })
})

app.post('/login.html', function (req, res) {

    //data = req.body.data;
    log.info("Got MESSAGE ");
    data = req.body.data;
    var stringify = JSON.stringify(data)

    log.info("Got: " , stringify);

    ...
    some code...
    ...

})

Файл сценария Java (который работает нормально при тестировании того же сценария: post login.html) выглядит:

...
$.ajax({

                type: 'POST',

                url: "login.html",

                data: { name: email, pass: password },

                success: function(data) {
                    console.log("got welcome.html page");
                    document.write(response);
                    },

                dataType: "json"

                });
...

код Android (использующий залп) и вызывающий ошибку на Node.Js выглядит так:

 private RequestQueue mRequestQueue;



    private void sendWithVolly(String url)
    {        

        Map<String, String> params = new HashMap<String, String>();
                params.put("user", "root");
                params.put("pass", "123456");


        JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
                url, new JSONObject(params),
                new Response.Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {

                    }
                }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {

            }
        }) {

            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();
                params.put("Content-Type", "application/json");

                return params;
            }

        };


        mRequestQueue.add(jsonObjReq);
        mRequestQueue.start();  

    }
  1. Почему существует различие между поведением веб-кода и кода Android?
  2. в чем проблема и как я могу это исправить?
...